使用MySQL触发器在更新同一表中的一行时插入新行

时间:2018-10-18 16:01:13

标签: mysql database triggers insert insert-update

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

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

值(EQ-30,跑步机,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 ;

1 个答案:

答案 0 :(得分:0)

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

请参阅此link