Бросить сообщение об исключении после вставки в MySQL - PullRequest
0 голосов
/ 06 июня 2018

Мне нужна ваша помощь по поводу после вставки триггера.

Я хочу выдать сообщение об исключении после вставки, но вставка не будет прервана.

Как я могу это сделать?Заранее спасибо.

CREATE TRIGGER `after_ins` AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN
 IF CURDATE() < '2018-08-01' THEN
    signal sqlstate '45000' set message_text = 'an error message', MYSQL_ERRNO = 1905;
 END IF;
END;

РЕДАКТИРОВАТЬ:

В этом случае мы не можем продолжать без прекращения с 45 sqlstate.И мы можем увидеть сообщение с оператором «ПОКАЗАТЬ ПРЕДУПРЕЖДЕНИЯ», верно?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

sqlstate, начинающиеся с 45, являются ошибками и завершают процедуру.sqlstate, начинающийся с 01, является предупреждением и позволяет продолжить процедуру.Посмотрите на справочную страницу для сигнала и первый пример для получения дополнительной информации

CREATE TRIGGER `after_ins` AFTER INSERT ON `my_table` FOR EACH ROW 
BEGIN
    IF CURDATE() < '2018-08-01' THEN
        signal sqlstate '01000' set message_text = 'an error message', MYSQL_ERRNO = 1905;
    END IF;
END
0 голосов
/ 06 июня 2018

Из синтаксиса "13.6.7.5 SIGNAL" :

(...) Значение SQLSTATE для оператора SIGNAL не должно начинаться с '00' потому что такие значения указывают на успех (...)

и

(...) SQLSTATE значения, начинающиеся с '01', являются сигналами в предупрежденииучебный класс.(...)

Поэтому попробуйте выбрать SQLSTATE, начинающийся с '00' или '01', в зависимости от того, хотите ли вы сообщить об успешном сообщении или предупреждении.

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