0

创建触发器的 DDL 脚本(以下来源)失败并出现 2 个错误:

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

(第 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 位。

4

1 回答 1

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 ; ^
于 2012-12-02T21:19:20.773 回答