Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if exists (select 1
- from sysobjects
- where id = object_id('TrigerTable')
- and type = 'U')
- begin
- drop table dbo.TrigerTable;
- drop procedure dbo.CreateTrigerTableRow;
- end
- GO
- CREATE TABLE dbo.TrigerTable
- (
- ID int identity
- , SETTING_VALUE int
- )
- GO
- CREATE PROCEDURE dbo.CreateTrigerTableRow
- @SETTING_VALUE int
- AS
- BEGIN
- insert into dbo.TrigerTable(SETTING_VALUE) values(@SETTING_VALUE);
- END
- GO
- CREATE TRIGGER dbo.TrigerTable_after_Insert_delete
- ON dbo.TrigerTable
- AFTER INSERT, UPDATE, DELETE
- AS
- BEGIN
- print N'Start Trigger'
- IF EXISTS(select 1 from inserted)
- BEGIN
- IF EXISTS(select 1 from deleted)
- BEGIN
- select 'Table Updated' as EVEN_TYPE
- , C.SETTING_VALUE as table_VALUE
- , i.SETTING_VALUE as inserted_VALUE
- , d.SETTING_VALUE as deleted_VALUE
- from inserted i
- inner join dbo.TrigerTable C
- on i.ID=C.ID
- inner join deleted d
- on C.ID=d.ID;
- END
- ELSE
- BEGIN
- select 'Table Insert' as EVEN_TYPE
- , C.SETTING_VALUE as table_VALUE
- , i.SETTING_VALUE as inserted_VALUE
- , d.SETTING_VALUE as deleted_VALUE
- from inserted i
- inner join dbo.TrigerTable C
- on i.ID=C.ID
- left outer join deleted d
- on C.ID=d.ID;
- END
- END
- ELSE
- BEGIN
- select 'Table Deleted' as EVEN_TYPE
- , C.SETTING_VALUE as table_VALUE
- , i.SETTING_VALUE as inserted_VALUE
- , d.SETTING_VALUE as deleted_VALUE
- from deleted d
- left outer join inserted i
- on d.ID=i.ID
- left outer join dbo.TrigerTable C
- on i.ID=C.ID;
- END
- END
- GO
- /*
- TEST: Insert one row
- */
- insert into dbo.TrigerTable(SETTING_VALUE) values(1);
- GO
- /*
- TEST: Update one row
- */
- update dbo.TrigerTable
- set SETTING_VALUE=2
- GO
- /*
- TEST: Delete one row
- */
- delete from dbo.TrigerTable
- GO
- /*
- TEST: Delete nothing
- */
- delete from dbo.TrigerTable
- GO
Add Comment
Please, Sign In to add comment