sql-server – SQL Server触发器切换插入,删除,更新
发布时间:2020-05-24 13:21:14 所属栏目:MsSql 来源:互联网
导读:你好可以在Trigger Body上的DML命令/操作(插入,删除,更新)之间切换吗?我尝试使用一些T-SQL来更好地理解我: CREATE TRIGGER DML_ON_TABLEA ON TABLEA AFTER INSERT,DELETE,UPDATEAS BEGIN SET NOCOUNT ON; CASE WHEN (INSERT) THEN
|
你好可以在Trigger Body上的DML命令/操作(插入,删除,更新)之间切换吗?我尝试使用一些T-SQL来更好地理解我: CREATE TRIGGER DML_ON_TABLEA
ON TABLEA
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
SET NOCOUNT ON;
CASE
WHEN (INSERT) THEN
-- INSERT ON AUX TABLEB
WHEN (DELETE) THEN
-- DELETE ON AUX TABLEB
ELSE --OR WHEN (UPDATE) THEN
-- UPDATE ON AUX TABLEB
END
END
GO
谢谢, 解决方法我将向您展示一种在SQL Server 2000或2005中检查此问题的简单方法(您忘记提及您正在使用的版本),但总的来说我同意Remus您应该将它们分解为单独的触发器:DECLARE @i INT,@d INT;
SELECT @i = COUNT(*) FROM inserted;
SELECT @d = COUNT(*) FROM deleted;
IF @i + @d > 0
BEGIN
IF @i > 0 AND @d = 0
BEGIN
-- logic for insert
END
IF @i > 0 AND @d > 0
BEGIN
-- logic for update
END
IF @i = 0 AND @d > 0
BEGIN
-- logic for delete
END
END
请注意,由于MERGE在SQL Server 2008中引入了复杂性,因此可能无法完全向前兼容.有关详细信息,请参阅此Connect项: > MERGE can cause a trigger to fire multiple times 因此,如果您计划将来使用SQL Server 2008和MERGE,那么这更有理由将触发器分解为每种类型的DML操作的触发器. (如果你想要更多理由避免MERGE,read this.) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- MySQL 存储过程传参数实现where id in(1,2,3,...
- SQL Server 批量更新数据库所有表中字段的内容,中
- sql-server – SQL Server查询LEFT JOIN,SUM和GR
- sql-server – 如何在SQL Server 2008中部署CLR函
- 主键和唯一索引 – SQL Developer生成的sql脚本
- sql-server – 在SQL Server中查找新Trace标记的
- sql-server-2008-r2 – 如何确定现在正在处理哪个
- SQL Server中用于寻址表的正确语法是什么?
- 访问和更改关系数据,使用SQL Server外联接
- mysql 5.7.21解压版安装配置方法图文教程(win10)
热点阅读
