Dev*_*ion 1 trigger sql-server insert t-sql sql-server-2008-r2
我知道这是您可以在本网站上找到的最简单的问题,但我无法在互联网上找到答案。
如何检查触发器是否由INSERT
或触发DELETE
?
CREATE TRIGGER [dbo].[TestTrigger]
On [dbo].[Table1]
AFTER INSERT, DELETE
AS
--if save
--do some work
--else if delete
--do some work other work
Run Code Online (Sandbox Code Playgroud)
如果是insert,我想做一些工作,如果是delete ,我想做一些其他工作。
请提供相同的代码片段。
Aar*_*and 10
只要触发器仅用于插入/删除:
IF EXISTS (SELECT 1 FROM inserted)
-- I am an insert
ELSE
-- I am a delete
Run Code Online (Sandbox Code Playgroud)
事实上,如果您基于对插入/删除的连接来做事,它甚至可以更简单:
-- do something for an insert
-- this will only actually do anything when it's an insert
INSERT dbo.somewhereElse SELECT whatever, 'insert'
FROM dbo.sourceTable AS s
INNER JOIN inserted AS i ON s.id = i.id;
-- do something for a delete
-- this will only actually do anything when it's a delete
INSERT dbo.somewhereElse SELECT whatever, 'delete'
FROM dbo.sourceTable AS s
INNER JOIN deleted AS d ON s.id = d.id;
Run Code Online (Sandbox Code Playgroud)
如果将更新操作添加到触发器中,逻辑会变得更加复杂,当然:
IF EXISTS (SELECT 1 FROM inserted)
BEGIN
IF EXISTS (SELECT 1 FROM deleted)
BEGIN
-- I am an update
END
ELSE
BEGIN
-- I am an insert
END
END
ELSE
BEGIN
-- I am a delete
END
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16736 次 |
最近记录: |