aliasghar
سه شنبه 12 خرداد 1383, 19:43 عصر
سلام من یک جدول به شکل زیر دارم
name ------------------ length ------------------ parent_len
---- 0 -------------------------- 1 -------------------------- گروه
---- 1 -------------------------- 4 -------------------------- کل
---- 4 -------------------------- 8 -------------------------- معین
---- 8 -------------------------- 13 ---------------------- تفضیل
( ببخشید بلد نیستم عکسی که از جدول گرفتم را اینجا بگذارم)
حال میخوام تریگری بنویسم که با پاک شدن یک رکورد ، رکوردی که parent_len ش برابر رکورد پاک شده باشه پاک کنه
مثلا با پاک کردن رکورد کل که lenght ش 4 است رکورد معین که parent_len ش 4 است پاک شود
و اینکار بصورت یک loop تا آخر بره
option های nested trigger و recursive trigger مربوط به database هم true کردم و تریگری به شکل زیر نوشتم
ALTER TRIGGER [T_D_Sath] ON dbo.Accounting_Lvl
AFTER DELETE
AS
begin
declare @Acc_Len smallint
declare @P_Len smallint
Select @Acc_Len = Lvl_Len From Deleted
Select @P_Len = Parent_Len from Deleted
Delete From dbo.Accounting_Lvl where Parent_len = @Acc_Len
end
البته میدونم متغیرهای تعریفی نیز لزومی ندارد ولی برای رفع مشکل اینکار را کردم چون هر وقت یک رکورد ( حتی آخرین رکورد ) را پاک میکنم خطا میدهد و میگوید محدودیت تریگرهای recursive تا 32 تا است
چیکار کنم
name ------------------ length ------------------ parent_len
---- 0 -------------------------- 1 -------------------------- گروه
---- 1 -------------------------- 4 -------------------------- کل
---- 4 -------------------------- 8 -------------------------- معین
---- 8 -------------------------- 13 ---------------------- تفضیل
( ببخشید بلد نیستم عکسی که از جدول گرفتم را اینجا بگذارم)
حال میخوام تریگری بنویسم که با پاک شدن یک رکورد ، رکوردی که parent_len ش برابر رکورد پاک شده باشه پاک کنه
مثلا با پاک کردن رکورد کل که lenght ش 4 است رکورد معین که parent_len ش 4 است پاک شود
و اینکار بصورت یک loop تا آخر بره
option های nested trigger و recursive trigger مربوط به database هم true کردم و تریگری به شکل زیر نوشتم
ALTER TRIGGER [T_D_Sath] ON dbo.Accounting_Lvl
AFTER DELETE
AS
begin
declare @Acc_Len smallint
declare @P_Len smallint
Select @Acc_Len = Lvl_Len From Deleted
Select @P_Len = Parent_Len from Deleted
Delete From dbo.Accounting_Lvl where Parent_len = @Acc_Len
end
البته میدونم متغیرهای تعریفی نیز لزومی ندارد ولی برای رفع مشکل اینکار را کردم چون هر وقت یک رکورد ( حتی آخرین رکورد ) را پاک میکنم خطا میدهد و میگوید محدودیت تریگرهای recursive تا 32 تا است
چیکار کنم