Как правильно объявить переменные триггеры phpmyadmin MySQL? - PullRequest
0 голосов
/ 10 января 2019

У меня есть база данных, где при каждом обновлении адреса в таблице пользователя я хочу сохранить его в таблице истории пользователя. Для этого я пытаюсь написать триггеры, но с треском проваливаюсь в phpmyadmin. Также это не дает мне правильную причину, почему я могу это исправить. Это то, что я сделал до сих пор.

DROP TRIGGER IF EXISTS `record_history`;
CREATE TRIGGER `record_history` AFTER UPDATE ON `s_user` 
FOR EACH ROW
BEGIN
    DECLARE date_current datetime;
    DECLARE residential_address varchar(1000);
    SET @date_current = NOW();
    SET @residential_address = NEW.residential_address;
    IF (@residential_address <> OLD.residential_address AND @residential_address != "" AND @residential_address IS NOT NULL) THEN
        INSERT INTO history_residential_address (`s_u_id`, `residential_address`, `status`, `date_added`, `date_updated`) VALUES 
        (OLD.s_u_id, @residential_address, 1, @date_current, @date_current);
    END IF;
END;
delimiter ;

Mysql Trigger Failed

1 Ответ

0 голосов
/ 10 января 2019

Более чистая версия вашего кода

DROP TRIGGER IF EXISTS `record_history`;

delimiter $$
CREATE TRIGGER `record_history` AFTER UPDATE ON `s_user` 
FOR EACH ROW
BEGIN
    IF (new.residential_address <> OLD.residential_address AND new.residential_address <> "" AND new.residential_address IS NOT NULL) THEN
        INSERT INTO history_residential_address (`s_u_id`, `residential_address`, `status`, `date_added`, `date_updated`) VALUES 
        (OLD.s_u_id, new.residential_address, 1, now(), now());
    END IF;
END $$
delimiter ;

Если у вас все еще есть проблемы, добавьте примеры данных из s_user в виде текста к вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...