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 に答える