【发布时间】:2012-02-23 04:41:33
【问题描述】:
我对触发器很陌生,所以这是一个非常初学者的问题。我只是想在行更新之前将其 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,它不应该过时。这里到底出了什么问题?
【问题讨论】:
-
您是否已经在
products上设置了 BEFORE UPDATE 触发器?您的触发器中还有其他问题,但首先要做的是。 -
是的,我做到了,但我用
SHOW TRIGGERS;摆脱了它,因此修复了该错误,但现在我在第 1 行的“DELIMITER”附近遇到了一些语法错误。 -
对其进行了更多更新。当我将它粘贴到 phpmyadmin 时,它说我有一些语法错误,但触发器仍然按预期运行并运行。有什么想法吗?
-
据我所知,phpmyadmin 实例(旧版本)不处理 DELIMITER 命令。尝试执行不带分隔符的 CREATE TRIGGER 语句。
标签: mysql sql triggers mysql-error-1235