【问题标题】:mysql - The target table of the UPDATE is not updatable using triggermysql - UPDATE 的目标表不能使用触发器更新
【发布时间】:2013-09-26 09:03:36
【问题描述】:

更新同一张表上的第一行后更新第二行和第三行表
在表中更新后存储过程或触发器(使用mysql)

id |Is_executed |准备好了 1 | 0 | 2 | | 0 3 | | 0

如果我将 is_executed 更新为 id 的“1”为 1,那么我想要以下行更新

id |Is_executed |准备好了 1 | 1 | 2 | | 1 3 | | 1

使用触发器或存储过程

【问题讨论】:

  • 我不了解其他人,但我不明白您的问题到底是什么。请澄清。
  • 您的问题是什么?您没有正确描述您遇到的问题,甚至没有提出问题。

标签: mysql stored-procedures triggers


【解决方案1】:

您的问题并不完全清楚您所需的业务逻辑,但听起来您需要以下几行的触发器:

DELIMITER ;;

CREATE TRIGGER my_trigger AFTER UPDATE ON my_table FOR EACH ROW
  IF NEW.id = 1 AND OLD.Is_executed = 0 AND NEW.Is_executed = 1 THEN
    UPDATE my_table SET Is_Ready = 1 WHERE id IN (2,3);
  END IF
;;

DELIMITER ;

【讨论】:

  • 不工作但逻辑正确,触发器不允许这个如何转换为存储过程。触发器有限制
  • @saurabhagrawal:在这种情况下,“不工作”是什么意思?此外,您可以创建存储过程,请阅读文档以了解更多信息。
  • 如何将下面的触发器查询转换为存储过程 CREATE TRIGGER my_trigger AFTER UPDATE ON orderbook FOR EACH BEGIN IF NEW.cob_OrderSeq = 'MAIN' AND NEW.cob_Is_Executed = 1 THEN UPDATE orderbook SET cob_is_Ready = 1 WHERE cob_OrderSeq IN ('SL','PB');万一;结尾;提前谢谢你..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
  • 2023-03-11
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多