HI WELCOME TO KANSIRIS

SQL Server Setting Triggers Firing Order

Leave a Comment
Sometimes we have multiple triggers on the same event(s). In that case we can't predict the firing order of triggers. Sometimes the firing order of trigger(s) is important for us to implement business logic. To solve this issue, In SQL Server we have option to set the firing order of triggers on same event(s).

Syntax for setting trigger firing order


  1. sp_settriggerorder @triggername='trg_name', @order='FIRST|LAST|NONE', @stmttype='INSERT|UPDATE|DELETE|CREATE_INDEX,ALTER_INDEX', @namespace='DATABASE|SERVER|NULL'


Simple example for setting trigger firing order


  1. CREATE TABLE dbo.TestTable (

  2. ID int NOT NULL,

  3. Description varchar(100)

  4. )

  5. GO

  6. --Now create triggers on above created table at same event INSERT

  7. CREATE TRIGGER dbo.trg_i_TriggerOrder1

  8. ON dbo.TestTable

  9. AFTER INSERT

  10. As

  11. PRINT 'I will be fired first.'

  12. GO

  13. CREATE TRIGGER dbo.trg_i_TriggerOrder2

  14. ON dbo.TestTable

  15. AFTER INSERT

  16. AS

  17. PRINT 'I will be fired last.'

  18. GO

  19. CREATE TRIGGER dbo.trg_i_TriggerOrder3

  20. ON dbo.TestTable

  21. AFTER INSERT

  22. AS

  23. PRINT 'I won''t be first or last.'

  24. GO


Set Triggers Firing Order


  1. --Now set triggers firing orders

  2. EXEC sp_settriggerorder 'dbo.trg_i_TriggerOrder1', 'First', 'INSERT'

  3. EXEC sp_settriggerorder 'dbo.trg_i_TriggerOrder2', 'Last', 'INSERT'

  4. --The order of firing the third trigger 'dbo.trg_i_TriggerOrder3' will be between above two



  1. --Insert data to see trigger firing order

  2. INSERT dbo.TestTable(ID,Description)VALUES (1,'Trigger firing order')


Summary
In this article I try to explain how you can set triggers firing order with a simple example. I hope after reading this article you will be able to understand firing order of trigger in Sql Server. I would like to have feedback from my blog readers. Please post your feedback, question, or comments about this article.

0 comments:

Post a Comment

Note: only a member of this blog may post a comment.