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