使用select更新SQL Server触发器,然后将其插入多个表

使用select更新SQL Server触发器,然后将其插入多个表,sql,sql-server,triggers,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

我试图在更新列时创建一个触发器,并将行插入到其他表中。数据来自具有多个联接的
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
我只是想了解将数据插入其他表的最有效方法

谢谢

假设SQL Server(语法建议如此),首先将值插入变量不是最佳做法,那么这样做的意义是什么?。而能够真正做到这一点的唯一方法是在表变量上,或者如果只更新一行,因为触发器会对受
更新影响的所有行执行一次,并且这些行在
插入的
伪表中可用。所以,你的触发器看起来像这样:

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
假设SQL Server(语法建议如此),首先将值插入变量不是最佳做法,那么这样做的意义何在?。而能够真正做到这一点的唯一方法是在表变量上,或者如果只更新一行,因为触发器会对受
更新影响的所有行执行一次,并且这些行在
插入的
伪表中可用。所以,你的触发器看起来像这样:

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

您使用的是哪种数据库管理系统?另外,您将如何使用这些变量?SQL Server。我想我可能需要使用变量来进行插入。我绝对不是db的人。我是一个懂一些sql的程序员。我从来没有做过选择,然后从那里插入。仅相反(插入列select value from)。您使用的是哪种DBMS?另外,您将如何使用这些变量?SQL Server。我想我可能需要使用变量来进行插入。我绝对不是db的人。我是一个懂一些sql的程序员。我从来没有做过选择,然后从那里插入。仅相反(插入列从中选择值)。