创建触发器的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位。
答案 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 ; ^