بخشی از پاورپوینت

--- پاورپوینت شامل تصاویر میباشد ----

اسلاید 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)

در متن اصلی پاورپوینت به هم ریختگی وجود ندارد. برای مطالعه بیشتر پاورپوینت آن را خریداری کنید