我对Triggers很陌生,所以这是一个非常初学者的问题。我只是在行更新之前尝试将其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年-此版本的MySQL尚不支持“对一个表具有相同操作时间和事件的多个触发器”
...我不太了解。我正在使用MySQL 5.1.53,它不应该过时。这到底是怎么了?
最佳答案
用您的代码看不到任何错误。
您可以使用mysql命令行吗? (就像我知道用于架构更改的其他所有dev / DBA一样?)
编辑:
您的INSERT
语法是非正统的,但对mysql有效。通常是:
...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...
关于mysql - 关于MySQL在更新之前编写触发器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9407283/