mySQL触发器PRINT& ROLLBACK

时间:2012-11-28 07:30:13

标签: mysql triggers

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

1 个答案:

答案 0 :(得分:0)

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

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

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