更新时SQL Server触发器选择然后插入多个表

时间:2013-01-29 18:58:57

标签: sql sql-server triggers

我正在尝试在更新列时创建触发器并将行插入到其他表中。数据来自具有多个连接的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

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

谢谢!

1 个答案:

答案 0 :(得分: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