DDL创建触发器脚本失败

时间:2012-12-02 20:55:42

标签: firebird ddl firebird2.5

创建触发器的DDL脚本(下面的源代码)失败,出现2个错误:

  

语句失败,SQLSTATE = 42000   动态SQL错误   -SQL错误代码= -104    - 意外的命令结束 - 第3行,第44列   在文件C中的第0行之后:\ CRMDemo \ Database \ DDL \ Trigger_Orders.sql   语句失败,SQLSTATE = 42000   动态SQL错误   -SQL错误代码= -104   -Token unknown - 第1行,第1列   -结束   在文件C的第14行:\ CRMDemo \ Database \ DDL \ Trigger_Orders.sql

(第3行,第44栏看起来可能是结束部分)。 我找不到任何有关错误42000或-104的信息。 触发器用于从生成器分配记录号,该记录号确实存在。此触发器在同一脚本的Interbase中正常工作。 我唯一能想到的是列大小Integer对于返回的值是不正确的。但是文档说这个值可能会被截断,但应该适用于期望值(1)。

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS ACTIVE BEFORE INSERT POSITION 95 AS
begin
  NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1);
end;

Firebird是2.5.2版本,刚刚下载。 Windows 7.数据库应为32位。

1 个答案:

答案 0 :(得分:3)

如果您使用 isql 实用程序运行语句,请确保使用 SET TERM 运算符:

SET TERM ^ ;

CREATE TRIGGER ORDERS_GENERATE_KEY FOR ORDERS 
  ACTIVE 
  BEFORE INSERT 
  POSITION 95 
AS
begin
  NEW.ORDER_NR = GEN_ID(NEW_ORDER_NUMBER, 1);
end
^

SET TERM ; ^