繁体   English   中英

在SQL Server 2008中从单行设置多个标量变量?

[英]Setting multiple scalar variables from a single row in SQL Server 2008?

在触发器中,我有以下代码:

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

是否可以将上述内容写入一行? 概念上喜欢的东西:

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

显然,我尝试了上述方法,没有成功; 我只是坚持使用第一种方法吗?

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

谢谢!

是的,使用第一种方法。

要么...

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

但是,如果您希望在触发器中设置类似的变量值,那么它是一个主要的红旗。 它通常意味着触发器设计不当并需要修改。 此代码期望插入的记录只有一个,这在所有情况下都不会成立。 多记录插入或更新将插入多个记录,触发器必须考虑到这一点(请不要使用触发器!!!)。 在任何情况下都不应写入触发器以仅处理一个记录的插入/更新或删除。 必须编写它们来处理数据集。

将插值中的值插入到触发器位于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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM