我对触发器非常陌生,所以这是一个非常初学者的问题。我只是尝试在行更新之前将其 id、旧值和新值以及当前日期存储到新表中。我尝试过以下方法:
DELIMITER //
DROP TRIGGER IF EXISTS stockTrig//
CREATE TRIGGER stockTrig BEFORE UPDATE ON products
FOR EACH ROW
BEGIN
IF NEW.quantity != OLD.quantity THEN
INSERT INTO stock_log SET p_id = OLD.id, old_stock = OLD.quantity, new_stock = NEW.quantity, date = CURDATE();
END IF;
END//
DELIMITER;
我得到以下信息:
1235 - This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table'
...我不太明白。我使用的是MySQL 5.1.53,它应该不会过时。这里到底出了什么问题?
最佳答案
我看你的代码没有任何问题。
可以直接使用mysql命令行吗? (就像我所知道的用于架构更改的所有其他开发/DBA 一样?)
编辑:
你的INSERT
语法是非正统的,但对mysql有效。通常情况下会是:
...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...
关于mysql - 在MySQL中编写关于BEFORE UPDATE的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9407283/