2010-02-16 126 views
4

在扳机,我有这样的代码:在SQL Server 2008中从单行设置多个标量变量?

SET @var1 = (SELECT col1 FROM Inserted); 
SET @var2 = (SELECT col2 FROM Inserted); 

是否可以写在上面一行?东西在概念上是这样的:

SET (@var1,@var2) = (SELECT col1,col2 FROM Inserted); 

很明显我试过上面的,没有成功;我只是坚持第一种方法吗?

即使可能,这是一个好主意吗?

谢谢!

回答

8

是的,使用第一种方法。

或者......

SELECT 
    @var1 = col1 
    ,@var2 = col2 
FROM 
    Inserted; 
0

不,这是不可能的。 SET接受一个目标和值。据我所知。

2

但是,如果您希望在触发器中设置这样的变量值,它就是一个主要的红旗。它通常意味着触发器设计不佳,需要修改。这段代码预计插入的只有一条记录,这在所有情况下都不会成立。多记录插入或更新将插入多个记录,并且触发器必须对此进行说明(请勿使用触发器!!!)。在任何情况下都不应将触发器编写为仅处理单记录插入/更新或删除。必须编写它们来处理数据集。

实例从插入到另一个表,其中触发器是table1的插入值:

CREATE TRIGGER mytrigger on table1 
AFTER INSERT 
AS 

INSERT table2 (field1, field2, field3) 
SELECT field1, 'test', CASE WHEN field3 >10 THEN field3 ELSE 0 END 
FROM inserted 
+0

你将有一个例子,我可以看看多记录插入扳机? 谢谢。 – johansson

+0

我明白了,谢谢。那么,我将如何处理触发器? – johansson

+0

这是样本触发器,不知道我明白你现在要求什么。 – HLGEM

相关问题