Написание триггеров в MySQL в отношении до обновления - PullRequest
0 голосов
/ 23 февраля 2012

Я очень новичок в Триггерах, и это вопрос для начинающих. Я пытаюсь просто перед обновлением строки сохранить его идентификатор, старые и новые значения, а также текущую дату в новой таблице. Я пробовал следующее:

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, который не должен быть устаревшим. Что именно здесь происходит не так?

1 Ответ

2 голосов
/ 23 февраля 2012

В вашем коде нет ничего плохого.

Можете ли вы просто использовать командную строку mysql?(как и любой другой dev / DBA, которого я знаю, использует для изменения схемы?)

Edit:

Ваш синтаксис INSERT неортодоксален, но действителен для mysql.Обычно это будет:

...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
    VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...
...