ورود

View Full Version : سوال: خطا در اجرای تریگر



armanpour
پنج شنبه 21 مرداد 1389, 14:42 عصر
با سلام
من دو تا جدول دارم ، یکی برای مشخصات دانشجو با کلید اصلی ID و دیگری برای نمرات دانشجو با کلید خارجی ID
حالا یک تریگر نوشتم به این صورت




create trigger tr_delete1 on Student

after Delete


as

declare @StID int
select @StID=ID from deletedbegin
delete from degrees where degrees.ID=@StID
end
go
delete from Student where ID='4'




اما زمان اجرا این خطا رو میده




The DELETE statement conflicted with the REFERENCE constraint "fk_Degrees". The conflict occurred in database "Fridaydb", table "dbo.Degrees", column 'ID'.




چطور میتونم این مشکل رو بر طرف کنم؟



با سپاس

محمد سلیم آبادی
پنج شنبه 21 مرداد 1389, 14:59 عصر
سلام،
شما می خواهید Delete را به حالت Cascade در بیارید. و از طرفی کلید خارجی هم تعریف کردید. خب در این جا دو راه وجود داره یا تنها از تریگر برای این کار استفاده کنید یا اینکه delete Rule کلید خارجی را روی Cascade تنظیم کنید (بطور پیشفرض روی No Action تنظیم شده).

اگر با تریگر این کار قرار هست اتفاق بی افتد بایستی کلا از کلید خارجی صرف نظر کنید و تمام امور را به تریگر بسپارید.