数值字段自动加1,100分

在InterBase 里地,如何让数值字段实现自动加1的功能.
---------------------------------------------------------------

创建自动增量字段的常用方法
【龙豪软件工作室 (3ASoft Studio) / 唐辉】
------------------------------------------------

我们使用的很多数据表都需要有一个能唯一标识一条记录的字段,且大多人在往此字段内添值时都使用自动增量的方式。Interbase本身能很好地处理这类问题。

下面我也就来谈谈常的几种方法:

一:使用Generator:

A:创建一个TABLE "CLIENTJOB":

CREATE TABLE "CLIENTJOB"
(
"CJ_ID" INTEGER,
"CJ_CLIENTID" INTEGER,
"CJ_DATE" DATE,
"CJ_STARTTIME" TIME,
"CJ_ENDTIME" TIME,
"CJ_TYPE" VARCHAR(36),
"CJ_XGRW" VARCHAR(36),
"CJ_TOPIC" VARCHAR(120),
"CJ_CONTENT" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"CJ_TIME" COMPUTED BY (CAST(((CJ_ENDTIME-CJ_STARTTIME)/60) AS NUMERIC(8, 3)))
);

B:创建Generator "GEN_CLIENTLIST":

CREATE GENERATOR "GEN_CLIENTLIST";

C:创建Trigger

CREATE TRIGGER "TRIG_CLIENTJOB_BI" FOR "CLIENTJOB"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
/*数据新增时,CJ_ID自动加1

二:直接使用Trigger

A:同第一点之A。

B:创建Trigger

CREATE TRIGGER "TRIG_CLIENTJOB_BI" FOR "CLIENTJOB"
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable ITEM_NUM Integer;/存放记录总数/
declare variable RECO_NUM Integer;/存放记录最大值/
BEGIN
SELECT COUNT(*),MAX(CJ_ID) FROM CLIENTJOB
INTO :RECO_NUM,:ITEM_NUM;
IF (RECO_NUM=0) THEN
NEW.CJ_ID=1;
ELSE
NEW.CJ_ID=:ITEM_NUM+1;
END

三:使用Store Procedure

A:同第一点A。

B:原理使用上同第二点的B,在此不多谈。

四:总结

使用效率以第一种最优,第三种次之,第二种最差。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus