第一个mysql触发器失败
好的,我已经开始在mysql中编写我的第一个触发器,它没有给出错误,但也不起作用第一个mysql触发器失败,mysql,triggers,Mysql,Triggers,好的,我已经开始在mysql中编写我的第一个触发器,它没有给出错误,但也不起作用 DELIMITER $$ DROP TRIGGER `cc`.`update_expires_date_trig`$$ CREATE TRIGGER `update_expires_date_trig` BEFORE INSERT ON `credit_test_acc` FOR EACH ROW BEGIN UPDATE credit_test_acc SET date_expires_acc =
DELIMITER $$
DROP TRIGGER `cc`.`update_expires_date_trig`$$
CREATE TRIGGER `update_expires_date_trig` BEFORE INSERT ON `credit_test_acc`
FOR EACH ROW BEGIN
UPDATE credit_test_acc SET date_expires_acc = DATE_ADD(CURDATE(), INTERVAL 6 MONTH) WHERE type_acc = 'init'
END;
$$
DELIMITER ;
我有两个问题:
据我所知,它必须像这样重写才能像你期望的那样工作:
DELIMITER $$
DROP TRIGGER `cc`.`update_expires_date_trig`$$
CREATE TRIGGER `update_expires_date_trig` BEFORE INSERT ON `credit_test_acc`
FOR EACH ROW BEGIN
SET NEW.date_expires_acc = DATE_ADD(CURDATE(), INTERVAL 6 MONTH)
END;
$$
DELIMITER ;
其中NEW指将要插入表中的行。你没有解释“type_acc”在这里可能扮演什么角色(我可以想出多种解释方式),所以我没有解释。如果它是我所认为的,你可以这样应用它:
IF NEW.type_acc = 'init' THEN # do whatever you want here
触发器无法更改触发它的表。
直接或间接地 您只能通过
SET new.field=newvalue
这只会影响触发的“当前”行(可以这么说)