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 中的每个命令都必须以终止符结尾 - 默认情况下是 a ;,但由于它也在触发器的主体内用作语句终止符,因此您需要使用该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 回答