Trigger در DB2
یک Trigger در DB2 ، مجموعه ای از اقدامات را در واکنش به دستورات Insert، Update و یا Delete در یک جدول یا view تعریف می کند. زمانی که این دستورات اجرا می شوند، Trigger فعال می گردد.
نحوه تعریف Trigger:
زمان ساختن یک Trigger در DB2 ، شما باید آن را به یک جدول و هنگام ساختن یک INSTEAD OF” TRIGGER” آن را به یک View ارتباط دهید. این جدول یا View را “جدول هدف” یا “Target Table” می نامند.
تعریف کردن Trigger در DB2 اختیاری است و از طریق دستور زیر می توان یک Trigger تعریف نمود:
CREATE TRIGGER trigger_name
NO CASCADE BEFORE |AFTER | INSTEAD OF trigger_event
ON table_name | view_name
REFERENCING OLD AS | NEW AS | OLD TABLE AS | NEW TABLE AS
FOR EACH ROW | FOR EACH STATEMENT
MODE DB2SQL
SECURED | NOT SECURED
TRIGGERED-ACTION sql_trigger_body;
Trigger در DB2 به همراه Referential Constraints و Check Constraints می تواند جهت تثبیت قوانین یکپارچگی داده استفاده شود. همچنین Triggerها می توانند باعث ایجاد تغییر در دیگر جدول ها شوند، جهت رکوردهای تغییر یافته یا اضافه شده به صورت اتوماتیک داده تولید کنند و یا Functionهایی را جهت انجام وظایف خاصی اعمال کنند.
به عنون مثال، Trigger زیر، بعد از انجام هر Insert در جدول Employees، جدول hr_stats را Update کرده و به مجموع تعداد افراد (headcount) یک عدد اضافه می کند.
CREATE TRIGGER update_headcount
AFTER INSERT ON employees
FOR EACH ROW MODE DB2SQL
UPDATE hr_stats
SET headcount = headcount + 1;
انواع Trigger در DB2 :
NO CASCADE BEFORE:
- قبل از دستور Update ، Insert و یا Delete اجرا می شود.
- شما می توانید از Triggerهای قبل از دستور Insert یا Update به چند روش استفاده کنید:
۱- جهت کنترل یا تغییر داده ها قبل از اینکه در دیتابیس Insert یا Update شوند. این مورد زمانی که می خواهید داده ها از فرمتی که دریافت می شوند به فرمت داخلی دیتابیس تغییر کنند، میتواند کمک کننده باشد.
۲- جهت اجرای یک عملیات غیردیتابیسی تعریف شده در User-defined Functions. - Trigger های قبل از دستور Delete، داده ها را کنترل می کنند و در صورت نیاز می توانند خطاها را مدیریت کنند.
AFTER:
- بعد از دستورهای Update، Insert و یا Delete اجرا می شود.
- شما می توانید از Triggerهای بعد از دستور Insert یا Update به چند روش استفاده کنید:
۱- جهت به روز رسانی داده ها در سایر جدول ها. این مورد برای حفظ رابطه ی جداول مورد استفاده قرار می گیرد.
۲- جهت کنترل یکپارچگی داده با آن جدول یا سایر جداول. این مورد جهت اطمینان از حفظ یکپارچگی داده ها در زمانی که Constraintهای جدول ناکارآمد یا محدود می باشند، اهمیت دارد.
۳- جهت اجرای یک عملیات غیردیتابیسی تعریف شده در User-defined Functions. این خصوصیت در زمان به روز رسانی اطلاعات در خارج از دیتابیس کمک کننده می باشد.
INSTEAD OF:
- تعیین می کند که به جای دستور نوشته شده (Insert، Update و Delete) عملیاتی بر روی View انجام شود.
- INSTEAD OF را نمیتوان بر روی جدول تعریف کرد.
- تنها یک INSTEAD OF Trigger می تواند بر روی هر دستور در View تعریف گردد.
REFERENCING:
- با استفاده از این گزینه می توانید جهت رکوردهای قبل و یا بعد از فعال شدن Trigger جداول موقتی تعریف نمایید که با استفاده از نام اختصاص داده شده بتوانید به این رکوردها رجوع کنید.
- جدول رکوردهای قبل از فعال شدن Trigger را با گزینه Old As یا Old Table As و جدول رکورد های بعد از فعال شدن Trigger را در قسمت New As یا New Table As میتوان تعیین کرد.
محتوای این مقاله بر گرفته از مطالب ارائه شده در کلاس حضوری DB2 fundamental Skills می باشد.
جهت مشاهده اطلاعات دوره حضوری DB2 fundamental Skills ترم تابستان اینجا کلیک کنید.
جهت مطالعه بیشتر درباره Trigger در DB2 می توانید از منابع زیر به زبان انگلیسی استفاده کنید: