免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9008 | 回复: 3
打印 上一主题 下一主题

如何在DB2中建立一个值自动增加的主键啊? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-12 10:02 |只看该作者 |倒序浏览
谁能告诉我啊?急求
用trigger实现的时候和oracle有什么不同啊?    

论坛徽章:
0
2 [报告]
发表于 2004-11-12 13:52 |只看该作者

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

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

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

论坛徽章:
0
3 [报告]
发表于 2004-11-15 05:30 |只看该作者

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

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

  1. CREATE SEQUENCE tbl_seq
  2.     START WITH 1
  3.     INCREMENT 1
  4.     NO MAXVALUE
  5.     NO CYCLE
  6.     NO CACHE

  7. INSERT INTO tbl (seqno, nam)
  8.     VALUES ( NEXTVAL FOR tbl_seq,'张三')
复制代码

论坛徽章:
0
4 [报告]
发表于 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/b ... 0616d00b46e016.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP