почему «еще» на триггере считается неправильным? - PullRequest
0 голосов
/ 31 декабря 2018

Я написал следующий код

DELIMITER $$

CREATE TRIGGER bm_keuangan 
AFTER UPDATE ON pembayaran_project FOR EACH ROW
BEGIN
DECLARE nama_project varchar(100);
DECLARE cek_di_keuangan varchar(100);
IF (!(isnull(NEW.deleted_at))) THEN
    UPDATE keuangan SET keuangan.deleted_at = now() WHERE keuangan.ref = NEW.id AND keuangan.jk_id = 5;
ELSE

END IF;

END $$
DELIMITER ;

И получил ошибку:

# 1064 - у вас ошибка в синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'END IF;

END' в строке 10

Ответы [ 2 ]

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

Из документов (выделено мной):

IF search_condition THEN statement_list
    [ELSEIF search_condition THEN statement_list] ...
    [ELSE statement_list]
END IF

Каждый statement_list состоит из одного или нескольких операторов SQL; пусто statement_list не разрешено .

0 голосов
/ 31 декабря 2018

Ваш блок ELSE пуст, это не разрешено в mysql.Вы должны удалить ключевое слово ELSE из вашего кода следующим образом:

DELIMITER $$

CREATE TRIGGER bm_keuangan 
AFTER UPDATE ON pembayaran_project FOR EACH ROW
BEGIN
DECLARE nama_project varchar(100);
DECLARE cek_di_keuangan varchar(100);
IF (!(isnull(NEW.deleted_at))) THEN
    UPDATE keuangan SET keuangan.deleted_at = now() WHERE keuangan.ref = NEW.id AND keuangan.jk_id = 5;

END IF;

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