【问题标题】:SQL Server trigger on update with select then insert into multiple tablesSQL Server 触发更新时选择然后插入到多个表中
【发布时间】:2013-01-13 10:56:06
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • 您使用的是哪个 DBMS?另外,您将如何使用这些变量?
  • SQL 服务器。好吧,我想我可能需要使用变量来进行插入。我绝不是一个 db 家伙。我是一个懂一些 sql 的程序员。我从来没有做过选择然后从那里插入。只有相反(插入列选择值)。

标签: sql sql-server triggers


【解决方案1】:

假设 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

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2016-09-10
    • 2015-01-15
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    相关资源
    最近更新 更多