我对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/

10-14 13:59
查看更多