1

我正在尝试在更新列时创建触发器并将行插入其他表。数据来自SELECT具有多个连接的数据,需要插入到多个表中。

我的问题是,在插入之前将值插入到变量中是最佳做法吗?我以前从未创建过这样的触发器。

CREATE TRIGGER ship_trigger ON dbo.Orders
FOR UPDATE
AS
SET NOCOUNT ON
IF ( UPDATE(OrderStatusId) AND OrderStatusId == 1)
BEGIN

SELECT
FROM
JOIN
JOIN
WHERE

我只是想了解将数据插入其他表的最有效方法

谢谢!

4

1 回答 1

4

假设 SQL Server(语法建议如此),首先将值插入变量不是最佳实践,这样做有什么意义?您实际上可以做到这一点的唯一方法是在表变量上,或者如果您只更新一行,因为触发器会针对受您影响的所有行执行一次,并且这些行在伪表UPDATE上可供您使用INSERTED. 因此,您的触发器将如下所示:

CREATE TRIGGER ship_trigger ON dbo.Orders
FOR UPDATE
AS
SET NOCOUNT ON

IF ( UPDATE(OrderStatusId) AND OrderStatusId = 1)
BEGIN

    INSERT INTO SomeTable(Col1, Col2)
    SELECT Col1, Col2
    FROM INSERTED

END
于 2013-01-29T19:09:38.027 回答