【问题标题】:SQL Server trigger: how to increase column's value in table when another table's column value increased?SQL Server触发器:当另一个表的列值增加时,如何增加表中的列值?
【发布时间】:2016-08-14 03:06:47
【问题描述】:

表格组件:

表材质:

component_quantity 增加时,如何编写触发器以减少material 表中的material_quantity 值?

由于组件是由材料制成的,因此当一个组件的数量增加时,具有相同material_id的材料数量将减少相同的数量。

【问题讨论】:

  • 只需发出 UPDATE 命令。

标签: sql sql-server tsql database-trigger


【解决方案1】:

插入/更新后触发器应该可以帮助你。

CREATE TRIGGER some_name
ON dbo.components
AFTER INSERT, UPDATE
AS
BEGIN
    UPDATE m
    SET material_quantity = m.material_quantity - (i.component_quantity - c.component_quantity)
    FROM materials m
    INNER JOIN components c ON c.material_id = m.material_id
    INNER JOIN inserted i ON c.component_id = i.component_id
END

【讨论】:

  • UPDATE 出现时,您的代码不会考虑deleted 中的任何值,即计算更新产生的增量。我想知道 OP 可能想要什么。
  • @HABO 是的,我也想到了。但最好在删除时使用另一个触发器。并且应该有外键,所以删除可能不会顺利
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 2020-10-25
  • 2011-03-12
  • 2021-07-15
  • 2013-10-10
  • 2022-01-20
相关资源
最近更新 更多