بخشی از پاورپوینت
--- پاورپوینت شامل تصاویر میباشد ----
اسلاید 1 :
تعریف و انواع Trigger
Trigger ها روالهایی هستند که پس از رخ دادن یک رویداد خاص به صورت خودکار اجرا می شوند .
انواع :
DDL Trigger
هنگامی اجرا می شوند ، که رویدادی سبب ایجاد تغییر در ساختار بانک اطلاعاتی یا اشیا در بانک اطلاعاتی شود .
DML Trigger
در هنگام رخ دادن دستورات DML ،(Insert , Update , Delete) روی جداول و Viewها اجرا می شوند .
اسلاید 2 :
انواع DML Trigger
After Trigger
بعد از اجرای دستورات Insert ، Update و Delete روال مربوطه اجرا مي شود .
Instead Of Trigger
به جای دستور Insert ، Update و Delete اجرا مي شود .
اسلاید 3 :
کاربردهای Trigger
اعمال محدودیت های جامعیتی در جایی که Constraint ها کارایی لازم را ندارند .
درج رکوردها در جدول Log
به هنگام سازی نسخه های مختلف داده
اعمال قواعد پیچیده فعالیتهای محیط کاری
اطلاع دادن به سایر برنامه هایی که تغییری در داده های جدول اتفاق افتاده است .
و ...
اسلاید 4 :
Syntaxکلی Trigger
Create [OR Replace] Trigger Trigger_name
Before|After |nstead Of Insert|Update|Delete
[OF column_name, column_name, …..]
ON table_name
[FOR EACH ROW]
[WHEN condition ]
Begin
-- Statements here
End ;
مواردی که در SQL Server وجود ندارد با رنگ قرمز مشخص شده است. این موارد به شکل دیگری در SQL Server قابل پیاده سازی می باشد.
اسلاید 5 :
Syntax در SQL Server
CREATE TRIGGER schema_name.trigger_name
ON ( table | view )
( FOR | AFTER | INSTEAD OF )
{ [ DELETE ] [ , ] [ INSERT ] [ , ] [ UPDATE ] }
AS
{ sql_statement [ ; ] [ ...n ] }
اسلاید 6 :
جداول Inserted و deleted در SQLServer
از دو جدول Inserted و Deleted برای دسترسی به رکوردهایی که تحت تاثیر قرار گرفته اند ، می توان استفاده نمود .
با استفاده از حلقه while بر روی جدول Inserted می توان FOR EACH ROW را پیاده سازی کرد.
اسلاید 7 :
تابعUPDATE
UPDATE ( column )
از این تابع برای تست اینکه آیا یک ستون از جدول در دستور Insert یا Update آورده شده است یا خیر استفاده می شود .
نکته : این تابع مشخص نمی کند که آیا مقدار ستون واقعا تغییر کرده است یا خیر .
مثال در query زیر
UPDATE customer SET City = City
مقدار با وجود اینکه مقدار City تغییر نکرده تابع Update(City) مقدار True را برمی گرداند . چون ستون City در دستور UPDATE ظاهر شده است .
اسلاید 8 :
Trigger های بازگشتی
در صورتی که تنظیم مربوط به RECURSIVE_TRIGGERS فعال باشد Trigger ها به صورت بازگشتی فراخوانی می شوند :
مثال
.1بر روی جدول T1 یک Update انجام می شود
.2Trigger با نام TR1 فعال می شود این Trigger یک Update بر روی جدول T2 انجام می دهد .
.3بر روی جدول T2 یک Trigger با نام TR2 وجود دارد که جدول T1 را Update می کند . در این حالت اجرای بازگشتی رخ داده است .
اسلاید 9 :
فعال سازی و غیر فعال کردن Trigger ها
ENABLE TRIGGER {trigger_name [ ,...n ] | ALL }
ON { table_name | DATABASE | ALL SERVER } [ ; ]
مثال 1 : فعال کردن و غیر فعال کردن یک Trigger خاص
DISABLE Trigger CheckAccountAvg ON Loan;
ENABLE Trigger CheckAccountAvg ON Loan;
اسلاید 10 :
مثال ها
CREATE TRIGGER reminder
ON titles
FOR INSERT, UPDATE
AS
RAISERROR (50009, 16, 10)