Что не так с этим триггером? - PullRequest
0 голосов
/ 10 сентября 2011

Я хочу установить только одну строку actived.Если кто-то попытается установить для estrutura_versao_status значение 1, установите для всех остальных значений estrutura_versao_status значение 0 и сохраните эту новую строку как единственную. Estrutura_versao_status = 1.

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON `sys_estrutura`
FOR EACH ROW
BEGIN
    IF (NEW.estrutura_versao_status = 1) THEN
        UPDATE `sys_estrutura` SET estrutura_versao_status = 0;
    END IF;
END;

Это ошибка.Синтаксис SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 5

1 Ответ

2 голосов
/ 10 сентября 2011

Предполагая, что вы хотите установить флаг для вновь вставленной строки, просто используйте его для переменной NEW. Нет необходимости делать ОБНОВЛЕНИЕ на столе.

CREATE TRIGGER tgr_classifica_ativa_revisao BEFORE INSERT ON sys_estrutura
FOR EACH ROW
BEGIN
    IF (NEW.estrutura_versao_status = 1) THEN
        SET NEW.estrutura_versao_status = 0;
    END IF;
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...