View Full Version : سوال: تریگر برای خذف یک سطر مرتبط با جدول اصلی
rooja_59
یک شنبه 24 مرداد 1389, 19:49 عصر
سلام. من میخوام تریگری بنویسم که با خذف یک سطر از جدولی مثل table1 سطر متناظری از table2 خذف شود. فرض میکنیم که پرایمری کی ها در دو جدول یکی هستند. لطفا اگه کسی کدی میدونه کمکم کنه . ممنون .
حمیدرضاصادقیان
دوشنبه 25 مرداد 1389, 09:37 صبح
سلام.اگر جدول دوم شما کلید خارجی جدول اول هست شما میتونید با استفاده از گزینه Cascade delete اینکارو انجام بدید.
حمیدرضاصادقیان
دوشنبه 25 مرداد 1389, 13:22 عصر
سلام.شما وقتی دارید جدول ایجاد میکنید یکی از امکاناتش ایجاد Relation هست. در این Relation جدول اصلی و جدول زیر مجموعه رو مشخص میکنید و فیلدهای مرتبط به هم رو مشخص می کنید در همین جا دو گزینه برای update,delete داره که اگر شما گزینه Delete رو روی cascade قرار بدید وقتی که در جدول اصلی یک رکورد حذف میشه اگر این جدول با 10 جدول دیگه هم ارتباط داشته باشه رکوردهای متناظر در اون 10 جدول هم حذف خواهد شد.دقیقا عملی مانند تریگر رو پیاده سازی خواهد کرد بدون کد نویسی.
محمد سلیم آبادی
سه شنبه 26 مرداد 1389, 01:48 صبح
برای درک صحیح از قیود کلید خارجی و Relationship توصیه می کنم این مقاله ی آموزشی را مطالعه کنید:
http://www.30sharp.com/article/13/245/11/enforcing-referential-integrity-using-ddl.aspx
همچنین در بعضی از مواقع این جامعیت را توسط کلید های خارجی نمی توانیم اعمال کنیم و ناچارا به Trigger و یا Stored Procedure احتیاج پیدا می کنیم.
برای مثال می توانید به این مقاله رجوع کنید که برای رفع مساله Multiple Cascade Paths راه حلی با trigger ارائه داده است:
http://www.30sharp.com/article/13/253/11/%d9%be%db%8c%d8%a7%d8%af%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-ri-%d8%aa%d9%88%d8%b3%d8%b7-%d8%aa%d8%b1%db%8c%da%af%d8%b1-%d9%88-%d9%be%d8%b1%d9%88%d8%b3%db%8c%d8%ac%d8%b1.aspx
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.