Firebird自动增量列

时间:2013-09-18 15:56:47

标签: triggers generator firebird

伙计们,我需要帮助在Firebird中创建自动增量列

以下是我的表格

我希望列 Seqid 自动递增

create Table TS_PRODUCT_PRICEHISTORY
(
  Seqid int not null,
  Remarks varchar(100)
)

我创建了一个生成器

CREATE GENERATOR tsproductpricehistory_gen_id;

然后创建一个触发器

CREATE TRIGGER aitspph_id FOR TS_PRODUCT_PRICEHISTORY
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.SEQID IS NULL) THEN
NEW.SEQID = GEN_ID(tsproductpricehistory_gen_id,1);
END 

当我尝试通过上面的代码创建触发器时,我收到此错误

  

错误: * IBPP :: SQLException * 上下文:Statement :: Prepare(CREATE)   TRIGGER aitspph_id FOR TS_PRODUCT_PRICEHISTORY在插入之前激活   POSITION 0 AS BEGIN IF(NEW.SEQID为NULL)然后NEW.SEQID =   GEN_ID(tsproductpricehistory_gen_id,1))消息:isc_dsql_prepare   失败

     

SQL消息:-104无效令牌

     

引擎代码:335544569引擎消息:动态SQL错误SQL   错误代码= -104意外的命令结束 - 第6行,第50列

似乎无法找到创建触发器的代码的错误。 感谢

1 个答案:

答案 0 :(得分:1)

试试这个:

CREATE TABLE TS_PRODUCT_PRICEHISTORY (
  SEQID    INTEGER NOT NULL,
  REMARKS  VARCHAR(100)
);

/* Autoincrement for field (SEQID) */
CREATE GENERATOR GEN_TS_PRODUCT_PRICEHISTORY_ID;

SET TERM ^ ;

CREATE TRIGGER TS_PRODUCT_PRICEHISTORY_BI FOR TS_PRODUCT_PRICEHISTORY
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.SEQID IS NULL) THEN
  NEW.SEQID = GEN_ID(GEN_TS_PRODUCT_PRICEHISTORY_ID,1);
END^

SET TERM ; ^