Database 在Firebird中创建触发器时出错

Database 在Firebird中创建触发器时出错,database,firebird,Database,Firebird,试图创建一个触发器来发布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 = 420

试图创建一个触发器来发布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”确实存在,并且其中包含数据。我的语法似乎有错误,但我无法找出它来挽救我的生命。

isql中的每个命令都必须以终止符符号结尾-默认情况下,这是一个
但由于它也在触发器的主体内用作语句终止符,因此需要使用命令将终止符字符更改为其他字符。要将终止符更改为
^
,您的脚本将

SET TERM ^ ;

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

SET TERM ; ^

请注意,
SET TERM
是特定于ISQL(和一些其他实用程序)的,它不是Firebird本身的一部分。如果要使用API执行此触发器创建代码,则不应使用
SET TERM