You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebird创建触发器报Token unknown -end错误如何解决

Firebird ISQL创建触发器报错SQLSTATE=42000的原因及解决方法

报错原因

  • 核心语法问题:Firebird的PSQL触发器/存储过程语法要求,代码块内的每一条执行语句末尾必须加语句结束符;,你提供的INSERT语句末尾没有添加分号,导致解析器识别到END关键字时无法匹配语法规则,抛出未知标记错误。
  • 隐藏执行问题:ISQL默认将;作为全局语句终止符,即便你补全了INSERT语句的分号,直接执行仍会被ISQL提前截断语句,同样会触发语法错误。

解决方法

步骤1:调整ISQL终止符

执行以下命令临时修改ISQL的全局语句终止符为^,避免和触发器内部的分号冲突:

SET TERM ^ ;

步骤2:执行修正后的触发器创建语句

以下是优化后的触发器代码,直接用触发器内置的NEW关键字获取刚插入INVE01表的那条数据,不需要额外查询排序,既避免了并发插入时取错数据的问题,也提升了执行性能:

CREATE TRIGGER dataweb_inve
ACTIVE AFTER INSERT POSITION 0
ON INVE01
AS
BEGIN
  INSERT INTO dataweb (CVE_ART, DESCR, EXIST, NUM_MON, CVE_BITA) 
  VALUES (NEW.CVE_ART, NEW.DESCR, NEW.EXIST, NEW.NUM_MON, NEW.CVE_BITA);
END^

如果你坚持要保留原来的查询写法,只需要在原INSERT语句末尾加;即可正常运行。

步骤3:改回ISQL默认终止符

创建完成后执行以下命令恢复默认的分号终止符:

SET TERM ; ^

内容的提问来源于stack exchange,提问作者Roob CG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:39:03