ArticleCity.com - free articles for reprint.

CATEGORIES

Keyword Search

Article Title
Author's Name

SITE MENU


SQL Server Triggers
 by: Chris Kemp


Triggers are stored procedures which are fired when data is modified in an underlying table. They can evaluate data being added to a table for validation purposes, or can make changes in that or other fields depending on the value of that data. You can use them even to execute a separate stored procedure, or to roll back a data modification or an entire transaction.

In earlier versions of SQL Server, triggers were used to maintain referential integrity. In current versions, constraints and foreign keys are used to accomplish much of those tasks, but triggers are still used to accomplish more complex tasks than that are available to the built in newer tools, such as complex column constraints, evaluation of tables in other databases, complicated defaults, or cascading routines involving multiple changes in multiple tables.

Triggers are created in the Enterprise Manager, or in the Query Analyzer through the object browser. There are also templates for triggers in the Query Analyzer (Edit|Insert Trigger). Triggers can be created with the following syntax:

CREATE TRIGGER trigger_name 
ON { table | view } 
[ WITH ENCRYPTION ] 
{ 
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } 
        [ WITH APPEND ] 
        [ NOT FOR REPLICATION ] 
        AS 
        [ { IF UPDATE ( column ) 
            [ { AND | OR } UPDATE ( column ) ] 
                [ ... n ] 
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) 
                { comparison_operator } column_bitmask [ ... n ] 
        } ] 
         sql_statement [ ... n ] 
    } 
} 

There are two types of triggers: AFTER and INSTEAD OF. After triggers AFTER TRIGGERS fire after the data is changed, either by insert, delete, or update. If the data is inappropriate, as defined in the trigger, the modification can be rolled back to where it was before the data was modified. After triggers AFTER TRIGGERS cannot be placed on views, and cannot be used on more than one table. Also, the text, ntext, and image columns cannot be referenced in an after trigger. AFTER TRIGGERS.

After triggers AFTER TRIGGERS can be nested to 32 levels deep, and can be called recursively, again to 32 levels.

Instead of INSTEAD OF triggers make the validation before the modification. However, Instead of INSTEAD OF triggers CAN can be used on views. They do not allow recursion, and you can only have one Instead of INSTEAD OF trigger per table. And you cannot use an Instead of INSTEAD OF trigger with a cascade.

Resources

• Information on Constraints and Triggers

This resource discusses about constraints and triggers in detail.

• Information: Create Trigger

This resource is useful in understanding the workings of triggers in detail.

Metro NY / NJ SQL Server Consultants

We specialize is custom database software. Call us for a free consultation (973) 635 0080 or email us at paladn.com.

About The Author

Chris Kemp is a well known author in the field of Information Technology. His articles are very popular and well known in the various article banks across internet. His popular articles are about SQL Server, Database Design, IT Consulting and Software Development.

chriskemp@webpopularity.org

This article was posted on February 02, 2006

<< Back to "Computers And Internet" Index

 

 


Disclaimer: The information presented and opinions expressed herein are those of the authors
and do not necessarily represent the views of ArticleCity.com and/or its partners.


Google
 
Web www.articlecity.com

  ZenSearch.com Make Money with this Breakthrough Affiliate Program Shop Online for Herbal Medicine and Other Health Supplements. Affordable Web Site Templates


Submit An Article || Submit Articles in Bulk || Submit Press Release || Syndicate Articles
Distribute Your Articles || Blogs || Free Magazines || Advertise on this site
Home || Privacy Policy || Terms of Use || Link To Us || Site Map || Contact Us

Copyright © 2001-2099 - Icthus.Net Communications