伙计们,我需要帮助在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列
似乎无法找到创建触发器的代码的错误。 感谢
答案 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 ; ^