Триггеры не стреляют в MySQL - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь установить триггер в базе данных mysql (5.7.17-log) для проверки данных во время вставки / обновления.Тем не менее, я не могу заставить триггеры срабатывать (полный скрипт sql прилагается).

Вот полный скрипт:

CREATE DATABASE IF NOT EXISTS `CUSTOMER_SERVICE`;
USE `CUSTOMER_SERVICE`;

CREATE TABLE IF NOT EXISTS `CustomerRecord` (
  `ID` VARCHAR(255) NOT NULL,
  `AGENT_ID` INTEGER DEFAULT 1,
  PRIMARY KEY (`ID`)
);

DELIMITER $$
CREATE PROCEDURE `AgentIdCheck`(IN AGENT_ID INTEGER)
BEGIN
    IF ((AGENT_ID < 0) || (AGENT_ID >= 1000)) THEN
        SIGNAL SQLSTATE '45000'
            SET MESSAGE_TEXT = 'AgentIdDCheck constraint failed';
    END IF;

END $$
DELIMITER ;

-- before insert
DELIMITER $$
CREATE TRIGGER `AgentIdCheck_Before_Insert` BEFORE INSERT ON `CustomerRecord`
FOR EACH ROW
BEGIN
    CALL AgentIdCheck(new.AGENT_ID);
END$$
DELIMITER ;

-- before update
DELIMITER $$
CREATE TRIGGER `AgentIdCheck_Before_Update` BEFORE UPDATE ON `CustomerRecord`
FOR EACH ROW
BEGIN
    CALL AgentIdCheck(new.AGENT_ID);
END $$
DELIMITER ;

INSERT INTO CustomerRecord (ID, AGENT_ID) VALUES ("Customer1", 5000);

Я пробовал END $$, END$$, END;$$и т. д., основываясь на моем поиске существующих вопросов.Пожалуйста, предложите.

1 Ответ

0 голосов
/ 22 ноября 2018

Триггеры срабатывают, но логика вашей процедуры неверна - должно быть ИЛИ нет и / &&

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