2016-10-26 3 views
0

Я получаю сообщение об ошибке в строке 5 (В полутоле в первом объявлении) что-то не соответствует MariaDB. У кого-то была аналогичная проблема, или вы знаете, как решить эту проблему?Объявление переменных внутри триггеров

CREATE TRIGGER incative 
BEFORE DELETE 
ON users FOR EACH ROW 
BEGIN 
    DECLARE _user INT; 
    DECLARE username VARCHAR(150),_password VARCHAR(150), 
      email VARCHAR(320),ip_address varchar(150), 
      _data VARCHAR(120),_time VARCHAR(150); 
    DECLARE _active int DEFAULT 1; 

    SELECT * INTO _user, username, _password, email, ip_address, 
        _data, _time, _active 
     FROM users WHERE ID_User = old.ID_User 

    INSERT into users(_user, username, _password, email, ip_address, 
         _data, _time, _active) 
END; 

Спасибо заранее!

+0

Зачем нужны столбцы, которые у вас уже есть в 'old'? Зачем вставлять строку, которую вы удаляете? Неверная логика с '_active'? Или с 'в пользователя'? –

+0

Обновление не сработало, поэтому мне пришлось попробовать другое решение. Это решение выглядело лучше для меня. Если вы знаете какое-либо лучшее решение, этот вопрос для этого. Благодарю. –

ответ

0

Вы должны добавить DELIMITER $$ перед тем создать ...

DELIMITER $$ 
CREATE TRIGGER incative 
BEFORE DELETE ..... 

для получения дополнительной информации вы можете проверить этот ответ: https://stackoverflow.com/a/1346645/1548932

Я не знаю случай для MariaDB, но если вы используете Mysql вы должны изменить линии 6:

DECLARE username,_password,email ,ip_address,_data,_time VARCHAR(150); 

Или, если длина являются Дифференц, вы должны объявить одну переменную в строке как:

DECLARE username VARCHAR(150) 
Declare email VARCHAR(320) 

И окончательно не забывайте; в конце строки 8 и 10

+0

Первая строка (DELIMITER $$) показывает мне ошибки каждый раз, когда я использую полуточку (;), я изменил ее на DELIMITER; и я внес изменения, которые вы предложили, и я все равно получаю ту же ошибку. # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса для использования рядом с '' в строке 4 –

Смежные вопросы