我們可以通過使用sp_settriggerorder
命令來設置觸發器的命令選項爲第一,最後還是無。我想知道設置觸發順序的意義。何時需要使用此選項?我使用SQL Server 2008 R2
。設置觸發命令的使用情況
0
A
回答
2
一個目的是如果你希望一個觸發器在其他觸發器(可能有昂貴的動作)觸發之前執行某種形式的理智檢查。如果first
觸發造成ROLLBACK
發生,其他的觸發器不會被觸發:
create table T (
ID int not null
)
go
create trigger T1
on T
after insert
as
RAISERROR('T1',10,1) WITH NOWAIT
go
create trigger T2
on T
after insert
as
RAISERROR('T2',10,1) WITH NOWAIT
go
create trigger T3
on T
after insert
as
RAISERROR('T3',10,1) WITH NOWAIT
go
sp_settriggerorder 'T1','First','Insert'
go
sp_settriggerorder 'T3','Last','Insert'
go
insert into T(ID) values (1)
--T1
--T2
--T3
--(1 row(s) affected)
go
alter trigger T1
on T
after insert
as
RAISERROR('T1',10,1) WITH NOWAIT
ROLLBACK TRANSACTION
go
insert into T(ID) values (2)
--T1
--Msg 3609, Level 16, State 1, Line 1
--The transaction ended in the trigger. The batch has been aborted.
0
It specifies當多個觸發器應用於SQL語句時,以何種順序觸發AFTER觸發器。您只能爲特定的表,數據庫或服務器指定一個第一個或最後一個觸發器。
相關問題
- 1. 情況下使用命令
- 2. 在命令行中運行命令時的CPU使用情況
- 3. 如何使用命令的觸發塊
- 4. 如何設置$發出指令在我的情況下
- 5. Postgres觸發器會在任何情況下設置修改值?
- 6. WPF觸發命令
- 7. 發送觸摸命令到Android設備
- 8. 如何在不使用gradle發佈命令的情況下發布Gradle工件
- 9. 使用valgrind跟蹤管道命令的內存使用情況
- 10. 使用情況下沒有設置
- 11. 觸發器沒有通過使用命令拷貝來觸發
- 12. WPF命令與事件觸發命令
- 13. 在什麼情況下,命令鏈設計模式適用?
- 14. 我應該使用「從包導入使用情況,設置」或「從。導入使用情況,設置」
- 15. cf應用命令的CF內存使用情況
- 16. 如何忽略vim命令的情況?
- 17. 否定設置未使用的命令
- 18. 使用命令設置EObject的資源
- 19. 使用情況發現外鍵與觸發器或函數
- 20. 如何監視我的命令的Cpu使用情況?
- 21. 在沒有命令行的情況下使用帶IntelliJ的SVN
- 22. IHttpHandler GetHttpHandler不會觸發的情況
- 23. 如何在不使用命令的情況下從swiftmailer發送後臺打印
- 24. 如何在不觸發slider1_ValueChanged的情況下設置C#滑塊的值
- 25. 設置觸發
- 26. 在Matlab中沒有coder.extrinsic的情況下使用Sim()命令
- 27. 可以在沒有命令行的情況下使用Singularity.gs嗎?
- 28. 在沒有命令行的情況下使用Catalyst
- 29. 如何根據GUI使用情況設置Emacs設置?
- 30. MFC觸發器ID_FILE_OPEN命令
它似乎是在按訂單執行觸發器不差。你能說一個描述設置觸發器訂單成本的例子嗎? – 2012-07-09 06:56:38
我不確定我明白你的意思。應用觸發器訂單的成本可以忽略不計。 – 2012-07-09 09:33:30