[英]SQL Server 2008 Declaring and setting variables using columns from a table
[英]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.