尝试创建触发器以在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”确实存在并且其中包含数据。我的语法似乎有一个错误,但我无法弄清楚是为了挽救我的生命。
答案 0 :(得分:3)
isql中的每个命令都必须以终结符符号结束 - 默认情况下为;
,但由于这也在触发器的主体内部用作语句终止符,因此您需要使用{{3}将终止符更改为其他符号。命令。要将终结符更改为^
,您的脚本将为
SET TERM ^ ;
CREATE TRIGGER test_trig FOR test
AFTER INSERT
AS
BEGIN
POST_EVENT 'test_inserted';
END^
SET TERM ; ^