daobafox 发表于 2004-11-12 10:02

如何在DB2中建立一个值自动增加的主键啊?

谁能告诉我啊?急求
用trigger实现的时候和oracle有什么不同啊?:em08::em08:

daliwa 发表于 2004-11-12 13:52

如何在DB2中建立一个值自动增加的主键啊?

不用建trigger那么麻烦,可以建一个识别字段就行了,
方法如下:
create table tab(num int generated always as identity ,                                       name char(10) )

插入时只需insert into tab(default,'张三')
就行。

mymm 发表于 2004-11-15 05:30

如何在DB2中建立一个值自动增加的主键啊?

定义识别字段是一种方法,还有一种方法是建立序号对象,如:

CREATE SEQUENCE tbl_seq
    START WITH 1
    INCREMENT 1
    NO MAXVALUE
    NO CYCLE
    NO CACHE

INSERT INTO tbl (seqno, nam)
    VALUES ( NEXTVAL FOR tbl_seq,'张三')

varyall 发表于 2011-09-29 11:15

DB2创建表:

create table abin17(
id int not null ,
createtime timestamp default current_timestamp not null,
firstname varchar(100) default null,
lastname varchar(100) default null,
constraint pk_abin17 primary key (id)
)



DB2创建序列Sequence:

create sequence seq_abin17_id
as integer
start with 1
increment by 1
minvalue 1
maxvalue 999999
cache 20
order;



DB2创建触发器Trigger:

--TRIG_ARTICLE_ADDARTICLEFOLDER
CREATE TRIGGER TRI_abin17
NO CASCADE BEFORE INSERT ON abin17
REFERENCING NEW AS articlef
FOR EACH ROW MODE DB2SQL

BEGIN ATOMIC
DECLARE temp_id double;
SET temp_id = NEXTVAL FOR SEQ_abin17_id;
SET articlef.id = temp_id;
END;



然后插入记录:

insert into ABIN17 (firstname,lastname)values ('abin','strong');

insert into ABIN17 (firstname,lastname)values ('abin','strong');

然后看看是否主键自增:

select * from abin17



呵呵,结果是自然自增了。



自己看下,我的博客地址是:http://hi.baidu.com/stevenjohn/blog/item/5f8d81f4f30616d00b46e016.html
页: [1]
查看完整版本: 如何在DB2中建立一个值自动增加的主键啊?