وقتی ما یک TRIGGER روی یک Table می نویسیم که زمانی که این جدول Update شد این Trigger اجرا شود
حالا اگر ما با این Trigger یک رکورد در همین Table قرار بدهیم چرا این Trigger حلقه بینهایت نمی شود؟؟؟
وقتی ما یک TRIGGER روی یک Table می نویسیم که زمانی که این جدول Update شد این Trigger اجرا شود
حالا اگر ما با این Trigger یک رکورد در همین Table قرار بدهیم چرا این Trigger حلقه بینهایت نمی شود؟؟؟
فکر نمی کنم اجازه ی همچین کاری را توی تریگر داشته باشین
ولی من این کار رو کردم اما حلقه بینهایتی هم رخ نداده
دلیلش اینه که در SQL تنظیمی وجود داره که از fire شدن یک trriger توسط trriger جلوگیری به عمل می آید و به صورت default به صورت false است
دوست عزیزم،
Triggerها و SPها میتونن حداکثر 32 مرحله Nest یا تو-در-تو بشن. ولی باید این قابلیت رو فعال کنین:
ALTER DATABASE [Northwind] SET RECURSIVE_TRIGGERS ON
با سلام
خیلى ساده هست Trigger شما روى Update هست و عمل شما یک Insert پس دلیلى براى اجرا سدن دوبارهى Trigger وجود ندارد.
اگر Trigger شما به عمل Insert حساس باشد تا تعداد مشخصى که SQL اجازه مىدهد این Trigger به صورت تودرتو اجرا خواهد شد. اگر اشتباه نکرده باشم تعداد پیشفرض براى حداکثر فراخوانى تودرتوى Trigger باید 32 تا باشد که البته قابل تغییر هست.
صبا صبوحى
خوب حالا ما چطو می تونیم مقدار 32 تا رو تغییر بدیم
البته از توجه شما تا حالا خیلی خیلی ممنونم
تو-در-تو شدن Triggerها رو میشه فعال یا غیر فعال کرد. من دستوری نمیشناسم برای تغییر عدد 32