PDA

View Full Version : حذف رکوردها در سلسله مراتب پدر فرزندی



shekoofeh
یک شنبه 14 آذر 1389, 11:05 صبح
سلام.
در تصویری که ضمیمه کردم 3 تا جدول وجود داره.
جدول StationsDesc و Stations دارای Cascade Delete هستند اما اگر سعی کنم که Stations و DetLoan1 را هم Cascade Delete کنم خطای زیر گرفته میشه:

Unable to create relationship 'FK_DetLoan1_Stations'.
Introducing FOREIGN KEY constraint 'FK_DetLoan1_Stations' on table 'DetLoan1' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

من چکار کنم تا با حذف رکورد در StationsDesc، علاوه بر رکوردهای فرزند اون در Stations، رکوردهای فرزند Stations هم در جدول DetLoan1 حذف بشن؟

مرسی.

حمیدرضاصادقیان
یک شنبه 14 آذر 1389, 11:10 صبح
سلام.
به صورت سلسله مراتبی نمیتونید از Cascade استفاده کنید.
میتونید Cascade Delete رو روی دوجدول آخر قرار بدید و برای جدول اول یک تریگر after delete بنویسید که با حذف اون رکورد مورد نظر از جدول station حذف شود که پس از حذف اون رکورد مورد نظر جدول سوم نیز حذف خواهد شد .چون جدول 2-3 به صورت Cascade عمل خواهند کرد.

shekoofeh
یک شنبه 14 آذر 1389, 11:31 صبح
مرسی آقای صادقیان.
Trigger رو نوشتم. فقط در زمان حذف رکورد از جدول StationsDesc، خطایی گرفته میشد مبنی بر اینکه رکورد متناظر در جدول Stations وجود نداره که البته صحیح می گفت چون بین StationsDesc و Stations ارتباط وجود داره و جامعیت داده ها باید حفظ بشه. تیک گزینه ی Enforce Foreign Key Constraint رو برداشتم و دیگه مشکلی وجود نداره.