0

我对触发器很陌生,所以这是一个非常初学者的问题。我只是想在行更新之前将其 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,它不应该过时。这里到底出了什么问题?

4

1 回答 1

2

你的代码我看不出有什么问题。

你可以只使用mysql命令行吗?(就像我所知道的用于架构更改的所有其他开发人员/DBA 一样?)

编辑:

您的INSERT语法是非正统的,但对 mysql 有效。通常它会是:

...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
    VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...
于 2012-02-23T05:12:05.533 回答