This sample presents a T-SQL DML Trigger.
A trigger is actually just a T-SQL script.
http://msdn.microsoft.com/en-us/library/ms189799.aspx
It makes use of the special 'inserted' table.
http://msdn.microsoft.com/en-us/library/ms191300.aspx
It is important to make use of exception catching to avoid chain failure.
The following sample create an insert and update DML trigger on the table called 'tbl_user_profile'.
Whenever a single record is being inserted or updated to 'tbl_user_profile', this script will be triggered.
The trigger will first check out the latest data from 'inserted' table, then it will attempt to update the destination table called 'temp_table_1'. If update success, it means existing record exists, otherwise, it will attempt to insert new record into 'temp_table_1'.
A trigger is actually just a T-SQL script.
http://msdn.microsoft.com/en-us/library/ms189799.aspx
It makes use of the special 'inserted' table.
http://msdn.microsoft.com/en-us/library/ms191300.aspx
It is important to make use of exception catching to avoid chain failure.
The following sample create an insert and update DML trigger on the table called 'tbl_user_profile'.
Whenever a single record is being inserted or updated to 'tbl_user_profile', this script will be triggered.
The trigger will first check out the latest data from 'inserted' table, then it will attempt to update the destination table called 'temp_table_1'. If update success, it means existing record exists, otherwise, it will attempt to insert new record into 'temp_table_1'.
IF OBJECT_ID ('tr_sync_table','TR') IS NOT NULL DROP TRIGGER tr_sync_table; GO CREATE TRIGGER tr_sync_table on tbl_user_profile After insert,update AS BEGIN TRY SET NOCOUNT ON declare @successCount as bigint,@errCount as bigint declare @cUserID as varchar(10) declare @USER_Name as varchar(80) SELECT @cUserID=i.USER_ID,@USER_Name=i.USER_NAME FROM inserted i if @@rowcount>=1 BEGIN BEGIN TRY UPDATE [temp_table_1] SET cUsername=@USER_Name WHERE cUserID=@cUserID if @@ROWCOUNT >=1 BEGIN SELECT @successCount = @successCount+1 END ELSE BEGIN -- INSERT ----- BEGIN TRY INSERT INTO [temp_table_1] (cUserID,cUsername) VALUES (@cUserID,@USER_Name) SELECT @successCount = @successCount+1 END TRY BEGIN CATCH SELECT @errCount = @errCount+1 END CATCH END END TRY BEGIN CATCH SELECT @errCount = @errCount+1 END CATCH END END TRY BEGIN CATCH --RAISERROR ('tr_sync_table', 16, 1); END CATCH Go
Comments