ورود

View Full Version : جلوگیری از درج داده تکراری



FirstLine
یک شنبه 16 اسفند 1383, 08:41 صبح
با سلام
من یه مشکل پیدا کرده ام و توی کتابی که دارم هم ، چیزی راجع به آن ننوشته است. :sad2:
یک جدول با نام Mortabet دارم که داخل آن دوفیلد عددی با نامهای ID_1 و ID_2 است.
حالا با یک روال دیگه بصورت مداوم اطلاعاتی به آن اضافه میشود و در هنگام اضافه شدن تقریبا این امکان وجود ندارد که چک کنم آیا این دو مقدار عددی که میخواهد در جدول Mortabet و فیلد های ID_1 و ID_2 اضافه شود تکراری است یا نه .
من چجوری میتونم کنترل کنم که اگر اطلاعاتی که میخواهد وارد شود در صورت تکراری بودن وارد نشود و اگر تکراری نبود به جدول اضافه شود.
لطفا راهنمایی بفرمایید.
:flower: با تشکر

M.GhanaatPisheh
یک شنبه 16 اسفند 1383, 14:35 عصر
باید یه Constraint (محدودیت) Unique رو به جدولتون اضافه کنید.
راجع به کلمات Constraint و Unique تحقیق کنید.

FirstLine
یک شنبه 16 اسفند 1383, 15:16 عصر
با سلام
آیا با استفاده از Triger نمیشه؟
با تشکر

esi022
یک شنبه 16 اسفند 1383, 16:12 عصر
در هنگام اضافه شدن تقریبا این امکان وجود ندارد که چک کنم آیا این دو مقدار عددی که میخواهد در جدول Mortabet و فیلد های ID_1 و ID_2 اضافه شود تکراری است یا نه .
*چرا؟

* با trigger میشه - در واقع trigger یه stored proc خاص هست که وقتی شما سعی میکنی کاری رو چدول بکنی sql اون رو اجرا میکنه .
اینکه چطوری باشه دیگه دست خودته

M.GhanaatPisheh
یک شنبه 16 اسفند 1383, 17:53 عصر
با trigger میشه
میشه بگید trigger قراره چیکار کنه؟

vcldeveloper
دوشنبه 17 اسفند 1383, 04:46 صبح
آیا با استفاده از Triger نمیشه؟
وقتی این کار رو میشه به راحتی با یه تیک زدن انجام داد، چه نیازی به trigger هست؟!!!

FirstLine
دوشنبه 17 اسفند 1383, 09:28 صبح
با سلام


به راحتی با یه تیک زدن انجام داد،

با تشکر از لطف همیشگی و راهنمایی های مثمر ثمر شما استاد عزیز ، انشاء الله موفق و پیروز باشید. :flower: :oops:
لطفا در مورد مشخص شده فوق راهنمایی بفرمایید. (البته در EnterPrise Manager) :oops:
با تشکر

M.GhanaatPisheh
دوشنبه 17 اسفند 1383, 12:35 عصر
اعمال Unique Constraint

زمان ساخت جدول:


yourColumn varchar(30) NULL
UNIQUE NONCLUSTERED

بعد از ساخت جدول:


ALTER TABLE YourTable ADD column_b VARCHAR(20) NULL
CONSTRAINT exb_unique UNIQUE

FirstLine
سه شنبه 18 اسفند 1383, 09:01 صبح
با سلام
بعد از ساخت جدول اگر بخواهیم با استفاده از Enterprise Manager این کار را انجام بدهم به چه صورت است؟ :flower:
با تشکر

M.GhanaatPisheh
سه شنبه 18 اسفند 1383, 14:00 عصر
توی پنجره Design اون بالا دکمه Manage Constraint رو بزنید
توی Tab ّ
Indexes/Keys دکمه New رو بزنید تا یه Index جدید ایجاد شه و اون پایین تیک Unique رو بزنید.....

FirstLine
سه شنبه 18 اسفند 1383, 16:31 عصر
با سلام
با تشکر از راهنمایی و لطف حضرتعالی :flower:
با انجام این کار زمانی که روال در حال اضافه کردن داده تکراری است پیغام خطا داده و روند اجرای روال متوقف میشود :mad:
با تشکر

M.GhanaatPisheh
سه شنبه 18 اسفند 1383, 19:08 عصر
موفق باشید