1

我需要帮助在 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 ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF (NEW.SEQID IS NULL) THEN NEW.SEQID = GEN_ID(tsproductpricehistory_gen_id,1) ) 消息:isc_dsql_prepare 失败

SQL 消息:-104 无效令牌

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

我似乎找不到创建触发器的代码有什么问题。

4

1 回答 1

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 ; ^
于 2014-12-20T17:49:37.503 回答