【问题标题】:Update a table based on another table with trigger使用触发器更新基于另一个表的表
【发布时间】:2022-01-15 18:33:42
【问题描述】:

我想做的是:

我有一张桌子“emprestimo” 使用这样的语法:

ID User Publicacao Id
1 1 1
2 2 1
3 2 2

我还有一张“publicacao”表,是这样的:

ID Emprestimos_total
1 1
2 0
3 0

我想要做的是,当我为 id 1 插入“emprestimo”时,在“publicacao”表中,“Emprestimos_total”将从“1”变为“2”。

我正在考虑使用这样的触发器:

CREATE TRIGGER update_qtq_emp
  AFTER INSERT ON emprestimo
  FOR EACH ROW
BEGIN
  UPDATE publicacao
     SET Emprestimos_total = Emprestimos_total + 1
   where Id = NEW.Id;
END;

有没有办法在 SQL 中做到这一点?

【问题讨论】:

    标签: mysql sql sql-update


    【解决方案1】:

    我建议你创建一个视图,例如

    CREATE [OR REPLACE] VIEW v_publicacao AS
    SELECT id, COUNT(id) AS Emprestimos_total
      FROM emprestimo
     GROUP BY id
    

    并从中查询,就像在需要时从表中查询一样。

    如果触发器由于当前案例的原因而被禁用,并且不需要在另一个已经可计算的源中存储数据,则可能存在错误结果。

    【讨论】:

      猜你喜欢
      • 2015-05-28
      • 2022-01-21
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2019-04-13
      • 1970-01-01
      相关资源
      最近更新 更多