0

トリガーを作成していますが、次のエラーが表示されます:

        15:22:44    create trigger trigger3 before update on test.testdata    
    for each row  
    begin      
    if new.qty < 50 then         
    SIGNAL SQLSTATE VALUE '99999'       
    SET MESSAGE_TEXT = 'An error occurred';       
    end if;    
    end;    
    Error Code: 1064. You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQLSTATE VALUE '99999'       
SET MESSAGE_TEXT = 'An error occurred';       
end i' at line 8    0.000 sec

私のトリガーコードは次のとおりです。

delimiter //

create trigger trigger3 before update on test.testdata

for each row 
begin

if new.qty < 50 then

    SIGNAL SQLSTATE VALUE '99999'
      SET MESSAGE_TEXT = 'An error occurred';

end if;

end;

//
delimiter ;

ここに画像の説明を入力

4

1 に答える 1

1

MySQL 6.0 ラインは2009 年に廃止されました(製品レベルのリリースには至りませんでした)。

バージョン6.0.0-alpha-community-nt-debugは、その名前が示すように、アルファ リリースのデバッグ ビルドでした。そのため、MySQL プロジェクトへの貢献者が新しいバージョンの初期段階のテストを実行することを意図していました。本番システムでは絶対に使用しないでください。一体どこでそれを見つけたのですか?

v6.0 はかなり前に MySQL Web サイトから削除されたため、ドキュメントを見つけるのはやや困難です。ただし、Oracle の Web サイトにはアーカイブがあり、ドキュメントにSIGNALは次のように記載されています。

このステートメントは MySQL 6.0.11 で追加されました。

SIGNALしたがって、このバージョンの MySQLでは使用できません。エラーをスローする必要がある場合は、存在しないプロシージャを呼び出すなど、意図的に誤ったステートメントを実行できます。

CALL error();

ただし、上記の内容から明らかでない場合は、v5.6.14 などの MySQL サーバーの安定した実稼働対応 (「一般リリース」) バージョンにアップグレードする必要があります (バージョン番号が小さいにもかかわらず、は実際にはもっと最近のリリースです)。

于 2013-11-15T10:33:57.610 に答える