DELIMITER $$
CREATE TRIGGER insertTrigger BEFORE INSERT ON `agents`
FOR EACH ROW
BEGIN
DECLARE groupID int;
SET groupID = 0;
SET groupID = (SELECT id FROM `groups` WHERE `id` = NEW.group_id);
IF (groupID != 0) THEN
PRINT 'ID is ' + groupID;
ROLLBACK;
END IF;
END$$
DELIMITER ;
创建上述触发器以检查组表中是否存在外键ID。
1)如何在mySQL中打印错误消息?
2)ROLLBACK功能不起作用。它给了我以下错误消息。 “#1422 - 存储函数或触发器中不允许显式或隐式提交。”
答案 0 :(得分:0)
您可以使用SIGNAL语句引发来自触发器的自定义消息的错误。
...
IF (groupID != 0) THEN
SET @msg = CONCAT('ID is ', groupID);
SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = @msg;
END IF;
...
如果您只想要警告消息,请使用以'01 ...'开头的SQLSTATE代码。