【问题标题】:update statement inside Trigger not updating all the rows in SQL server 2008触发器内的更新语句未更新 SQL Server 2008 中的所有行
【发布时间】:2014-09-15 14:22:30
【问题描述】:

我有两个表。表 1 有更新触发器,它将更新表中的详细信息。但是表在 table1 中有很多行具有相同的键。(表 1 中的键是主键,但在表 2 中它是外键)。更新触发器只更新 table2 中的一行而不更新具有相同键的所有行。

Update  table2 set colu1 = "value" where  colu2 = primarykey

【问题讨论】:

  • 请提供您的触发代码。您很可能必须加入 inserted 虚拟表才能完成所需的操作。
  • 可能您正在填充变量而不是加入虚拟表。这是一个非常常见的错误。使用触发代码编辑帖子。
  • 在更新后在 table1 上创建触发器 if update(col in table1) begin Update table2 set colu1 = "value" where colu2 = primarykey END END

标签: sql-server


【解决方案1】:

在不太了解您的桌子的情况下,我认为您想要这样的东西:

CREATE TRIGGER Table1Trigger ON table1
AFTER UPDATE AS
IF UPDATE(col) 
BEGIN
    UPDATE table2
    SET colu1 = 'value'
    FROM table2 
    INNER JOIN inserted ON table2.colu2 = inserted.[key]
END

如果更新更改列 @ 987654325@。您可能必须更改列名以匹配您的表格的外观。

【讨论】:

    猜你喜欢
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2013-04-01
    • 2013-05-13
    • 2015-01-20
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多