داده تکراری در دیتابیس
سلام
من میخوام داخل سایتم هر کسی یک بار در نظر سنجی شرکت کنه
چطور باید از کد پرسنلی تکراری جهت شرکت در نظر سنجی جلوگیری کنم
ممنون میشم منو راهنمایی کنید
9 پاسخ
من خیلی بد سوال پرسیدم ببخشید
این سایت نام و نام خانوادگی و کدپرسنلی را به عنوان ورودی از کاربر میگیرد
وباید بررسی کند هر کد پرسنلی یک بار در نظرسنجی شرکت کند من کد پرسنلی را کلید اصلی قرار دادم
و برای آن ایندکس معرفی کردم که یونیک باشد
اما نتونستم به کاربر بگم که "شما قبلا در نظر سنجی شرکت کرده اید"
امیدوارم منظورمو رسونده باشم
مشکل اصلی شما تو کوئری های ساده است ، باید روی select کار کنید.
شبیه چیزی که من نوشتم ، ببینید نتایج رو کجا دارید ذخیره می کنید بهش یه ستون ID کاربر باید بدید ،
قبل از ذخیره نتیایج یه select بزنید ببینید اونجا چیزی با این نام کاربری ذخیره شده یا نه.
شماره پرسنلی کاربر رو به عنوان پارامتر بفرست و یه Flagاز نوع bit تعریف کن. کویری رو اینطور بنویس:
create PROCEDURE dbo.[Get_ChecknazarsanjiByPersonID]
@PersonID bigint,
@Flag bit output
AS
BEGIN
declare @IsRepeat int
select @IsRepeat=PersonID from nazarsanji where PersonID=@PersonID
if(@IsRepeat is not null)
begin
set @Flag=1
end
else
begin
set @Flag=0
end
select @Flag
END
توی کد C#براساسFlag به کاربر پیام نمایش بدین
می تونین ایندکس تعریف کنید و Isunique=true کنید تا از تکرار جلوگیری کنی
میشه لطفا نمونه کوئری رو برام بنویسید
چجوری تو سی شارپ فراخوانیش کنم
اول یه کوئری بزنید و ببینید قبلا شرکت کرده یا نه ، اگر بله بهش پیغام بدید و کار ادامه پیدا نکنه.
خدا خیرتون بده ! سوال رو یه جور بنویسید که آدم متوجه بشه ، چی لازم دارید و چه مقدار می دونید.
شما می گید یه نظرسنجی دارم ، آدم فکر می کنه به اون قسمت و پیش نیازهاش تسلط دارید ...
نمونه کوئری یه چیزی شبیه این میشه :
select * from pollresult where userId='001' & pollID='002'
تو این کوئری من در نظر گرفتم که شما ممکنه چند تا نظرسنجی داشته باشید و ID اون نظرسنجی خاص رو بررسی کنید...
در مورد فراخوانی دستورات sql در c# بهتره به آموزشهای سایت مراجعه کنید ، تو چند خط نمی گنجه.
میشه بیشتر راهنمایی کنید ایندکس تعریف میکنم از تکرار جلوگیری میکنه اما به کاربر چجوری بگم کد وارد شده تکراریه ممنون
در جدول پاسخ نظرسنجی ، کد کاربر رو ثبت کنید ، زمان ثبت پاسخ چک کنید که قبلا این کاربر پاسخ داده یا نه.
اگر پاسخ از قبل وجود داشت می تونید یا چلوگیری کنید یا پاسخش رو به روز کنید.