当前位置:  开发笔记 > 数据库 > 正文

如何在SQL Server触发器中测试多行操作?

如何解决《如何在SQLServer触发器中测试多行操作?》经验,为你挑选了1个好方法。

我的幼儿园SQL Server告诉我,在插入和删除的伪表中可能会触发多行触发器.考虑到这一点,我主要编写我的触发器代码,经常导致一些基于游标的cludge.现在我真的只能测试它们一次射击一行.如何生成多行触发器并且SQL Server实际上是否会发送多行触发器?我可以设置一个标志,以便SQL Server只会触发单行触发器吗?



1> Mitch Wheat..:

触发器定义应始终处理多行.

取自SQLTeam:

-- BAD Trigger code following:

CREATE TRIGGER trg_Table1 
ON Table1 
For UPDATE
AS
DECLARE @var1 int, @var2 varchar(50)

SELECT @var1 = Table1_ID, @var2 = Column2
FROM inserted

UPDATE Table2
SET SomeColumn = @var2
WHERE Table1_ID = @var1

上面的触发器仅适用于inserted表中的最后一行.

这是你应该如何实现它:

CREATE TRIGGER trg_Table1 
ON Table1 
FOR UPDATE
AS

UPDATE t2
SET SomeColumn = i.SomeColumn
FROM Table2 t2
INNER JOIN inserted i
ON t2.Table1_ID = i.Table1_ID

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有