Trigger ها نوع خاصی از Stored Procedure ها هستند که مستقیما توسط کاربر قابل اجرا نیستند . هنگامی که یک Trigger ساخته می شود در زمان تغییر خاصی روی کل جدول و یا ستون خاصی از آن رویه ذخیره شده در Trigger فراخوانی می شود .
یک Trigger در پاسخ به جملات INSERT, UPDATE, DELETE فراخوانی می شود . و می تواند پرس و جویی از جدول های دیگر ویا دستورات مرکب SQL باشد. اگر Server با مشکلی مانند پر شدن محل ذخیره داده مواجه شود تمام تراکنش به طور خودکار بازگشت داده می شود .
Trigger ها می توانند در کارهای زیر مفید باشند :
- می توانند تغییراتی را بصورت آبشاری (Cascading) در جدول های از بانک اطلاعاتی ایجاد کنند .
- می توانند تغییراتی بسیار پیچیده تر و مرکب تر از ایجاد محدودیت ها بوسیله CHECK را ایجاد کنند . مثلا محدود کننده Check تنها می تواند مقدار یک ستون را با مقداری از همان جدول مقایسه کند و اگر بخواهیم آنرا با مقداری از جدول دیگری مقایسه کنیم نیاز به Trigger خواهیم داشت .
- محدود کننده ها (Constraint) تنها می توانند با پیامهای خطای استاندارد کار کنند و برای پاسخگویی به خطای مرکب باید از Trigger ها استفاده کرد .
- ارزیابی وضعیت جدول قبل و یا بعد از تغییر در آن به منظور تعیین انجام کارهای خاص در وضعیت های خاص .
- قابلیت انجام چند Trigger در پاسخ به INSERT, UPDATE, DELETE
نکته:
اگر Constraint هایی روی یک جدول Trigger اعمال شود ، آنها بعد از جملات Instead of Trigger و قبل از After اجرا می شوند . اگر در اجرای Constraint ها ایرادی بودجود آمد فعالیتهای Instead of باز گردانده می شوند و تریگر After اجرا نمی شود .
ساختار یک TRIGGER :
CREATE [OR REPLACE ] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF }
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
WHEN (condition)
BEGIN
--- sql statements
END;
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.