【问题标题】:Inserting a new row while updating a row in the same table using MySQL triggers使用 MySQL 触发器在更新同一表中的行时插入新行
【发布时间】:2019-03-23 12:07:10
【问题描述】:

在更新同一个表中的一行后,我试图在表中插入一行。我试图用触发器来做到这一点。但是我发现用这种方法是不可能的。

我想要实现的是,我有这个 tbl_eq_maintenance(eq_no,eq_name,last_rep_date,next_rep_date,status)

价值观(EQ-30,treadmill,08-10-2018,18-10-2018,0)。

我想将此行的状态更新为“1”,然后在同一个表中插入一个新行,如下所示。 (EQ-30,跑步机,18-10-2018,28-10-2018,0)。 我如何使用触发器执行此操作,或者如果不能,是否有解决方法。

我写的触发器如下。

DELIMITER $$
CREATE TRIGGER add_maintenance 
    AFTER UPDATE on tbl_eq_maintenance
    FOR EACH ROW
BEGIN
    DECLARE next_rep_date DATE;
    DECLARE new_m_cycle INT(5);

    SELECT m_cycle INTO new_m_cycle FROM tbl_equipments WHERE eq_no = NEW.eq_no;
    SET next_rep_date = DATE_ADD(CURDATE(), INTERVAL new_m_cycle DAY);
    INSERT INTO tbl_eq_maintenance (eq_no,eq_name,last_rep_date,next_rep_date)
    Values (NEW.eq_no,NEW.eq_name,CURDATE(),next_rep_date);

END$$
DELIMITER ;

【问题讨论】:

  • 除了设置 NEW 之外,您不能对触发触发器的表进行操作。 /老的。值。
  • 我能做些什么呢? @P.鲑鱼

标签: mysql database triggers insert insert-update


【解决方案1】:

当您更新表时,此触发器将执行并在表中插入一条新记录。

参考这个link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2011-10-19
    • 1970-01-01
    • 2014-09-23
    • 2018-09-07
    • 1970-01-01
    相关资源
    最近更新 更多