0

条件が満たされない場合に挿入が発生しないようにトリガーを設定しようとしています。

以下がその方法だと思いましたが、よくわかりません

エラーが発生します/*SQLエラー(1407):不正なSQLSTATE: '45000' * /

誰かが私にこのエラーが発生する理由と、mysqlで条件が満たされない場合に挿入を防ぐための最良の方法を教えてもらえますか?

DELIMITER $$
SHOW WARNINGS$$
USE `warrington_central`$$ 

CREATE TRIGGER before_insert_image_comment_section_check
BEFORE INSERT ON image_comment FOR EACH ROW
BEGIN

 DECLARE error_msg varchar(255);
IF New.section != (SELECT id from section where section = "image")
    THEN SET    error_msg = "Cannot insert a comment into this section as it is the wrong section type";
    SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;


END IF;

END
$$

SHOW WARNINGS$$
4

1 に答える 1

4

SQLSTATEは、以前にDECLARE ... CONDITIONを使用して宣言されていない限り、5文字の文字列である必要があります。

SIGNAL SQLSTATE '45000 'SET MESSAGE_TEXT = error_msg;

SQLSTATEを6文字の長さの「45000」(スペースに注意)に設定しようとしています。間隔を修正すると、メッセージが再び表示されないはずです(エラーメッセージにも反映されますが、スペースが少し見づらいです)

于 2012-09-23T18:38:46.597 に答える