0
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 - 存储函数或触发器中不允许显式或隐式提交。”

4

1 回答 1

0

您可以使用SIGNAL语句来引发来自触发器的自定义消息的错误。

...
IF (groupID != 0) THEN
  SET @msg = CONCAT('ID is ', groupID);
  SIGNAL SQLSTATE '02000' SET MESSAGE_TEXT = @msg;
END IF;
...

如果您只需要警告消息,请使用以 '01...' 开头的 SQLSTATE 代码。

于 2012-11-28T07:35:50.403 回答