在MySQL中编写有关更新前的触发器
我对触发器非常陌生,所以这是一个非常初级的问题。我只是尝试在一行更新之前,将其id、新旧值以及当前日期存储到一个新表中。我尝试了以下方法:在MySQL中编写有关更新前的触发器,mysql,sql,triggers,mysql-error-1235,Mysql,Sql,Triggers,Mysql Error 1235,我对触发器非常陌生,所以这是一个非常初级的问题。我只是尝试在一行更新之前,将其id、新旧值以及当前日期存储到一个新表中。我尝试了以下方法: DELIMITER // DROP TRIGGER IF EXISTS stockTrig// CREATE TRIGGER stockTrig BEFORE UPDATE ON products FOR EACH ROW BEGIN IF NEW.quantity != OLD.qua
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命令行吗?(就像我所知道的所有其他开发人员/数据库管理员一样,他们使用模式更改?) 编辑: 您的
INSERT
语法是非正统的,但对mysql有效。通常是:
...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...
您是否已经在
产品
上设置了更新前触发器?您的触发器也有其他问题,但首先要做的是。是的,我有,但我用SHOW触发器解决了它代码>,因此修复了该错误,但现在我在第1行的“DELIMITER”附近发现了一些语法错误。更新了更多。当我将它粘贴到phpmyadmin中时,它说我有一些语法错误,但触发器仍然会通过并按预期运行。有什么想法吗?正如我所知,phpmyadmin实例(旧版本)不处理分隔符命令。尝试执行不带分隔符的CREATE TRIGGER语句。@Devart OK。“你每天都在学习”。我不知道mysql中insert的语法。酷。是的,这是执行此操作的另一种方式。同意“你每天都能学到东西”;-)