2013-06-12 137 views
1

创建触发器试图创建触发器张贴在火鸟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 

任何想法?我已经验证表“测试”确实存在并且有数据。看起来我的语法中有一个错误,但我无法想出来拯救我的生活。

回答

3

在ISQL必须终止符号end每一个命令 - 默认那是一个;却自认为还触发的身体作为语句终止内部使用,你需要使用SET TERM命令终止符更改为别的东西。要将终止符更改为^,您的脚本将为

SET TERM^; 

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

SET TERM ;^
+0

您是拯救者,谢谢! – jongusmoe

+1

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