1

Firebird 2.5 でイベントを投稿するトリガーを作成しようとしていますが、気が狂いそうです。これが私のトリガーです:

CREATE TRIGGER test_trig FOR test
AFTER INSERT
AS
BEGIN
        POST_EVENT 'test_inserted';
END
-- there is a blank line here

ファイルにこれがあります。これを実行しようとすると、次のエラーが表示されます。

SQL> in test.sql;
Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Unexpected end of command - line 5, column 13
After line 0 in file test.sql
Expected end of statement, encountered EOF

インタラクティブに入力しようとすると、次のようになります。

Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 1, column 1
-END

何か案は?テーブル「test」が実際に存在し、データが含まれていることを確認しました。構文にエラーがあるようですが、命を救うためにそれを理解することはできません。

4

1 に答える 1

3

isql の各コマンドはターミネータ記号で終了する必要があります - デフォルト;ではそれですが、トリガーの本体内でステートメントターミネータとしても使用されるため、コマンドを使用してターミネータ文字を別のものに変更する必要がありますSET TERM。ターミネータを^スクリプトに変更するには

SET TERM ^ ;

CREATE TRIGGER test_trig FOR test
AFTER INSERT
AS
BEGIN
        POST_EVENT 'test_inserted';
END^

SET TERM ; ^
于 2013-06-12T19:53:30.167 に答える