当前位置: 首页 > 图文教程 > 数据库 > DB2 > DB2 自动递增字段实现方法

DB2
IBM DB2 日常维护汇总(八)
IBM DB2 日常维护汇总(七)
IBM DB2 日常维护汇总(五)
IBM DB2 日常维护汇总(四)
IBM DB2 日常维护汇总(三)
IBM DB2 日常维护汇总(二)
IBM DB2 日常维护汇总(一)
DB2常用傻瓜问题1000问(六)
DB2常用傻瓜问题1000问(五)
MySQL数据库结构和数据的导出和导入
DB2编程序小小技巧
在DB2中提高INSERT性能的技巧(1)
db2v8的pdf文档资料
DB2 9数据服务器发展3部曲
对比DB2 9和DB2 V8.x中的XML功能
用shell抽取,更新db2的数据
IBM DB2 Connect简介(1)
使用XQuery查询DB2 XML数据
DB2 9产品说明书在线参考地址(http)
使用SQL查询DB2 9中的XML数据

DB2 自动递增字段实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 267 ::
收藏到网摘: n/a

DB2提供了当有一行插入的时候自动在某一列添加值的功能,可以使用所谓identity rules,简单点的比如某个数值的递增填入该列中,当然也有很复杂的。 使用这个一般是用作识别码的,当做定义表格的主键。generated语法则可以自定义你想怎么产生这个值的策略。
语法如下:
column definition generated {always | by default}
as {identity identity rules | using your rules}
我们先删掉上次我们建立的表格:
db2 => drop table nomination
然后再创建一个表格:
复制代码 代码如下:

Create table nomination
(
nominationID BIGINT Not Null Primary Key generated always as identity,
nominee char(6) Not Null,
nominator char(6) Not Null,
reason VARCHAR(250),
nomdate date Not Null,
categoryid INTEGER Not Null,
check (nominee != nominator) not enforced enable query optimization,
Foreign Key CategoryExists (categoryid)
references category (categoryid) on delete restrict
)

注意黑体字,以后我们就不能使用insert或者update来显式的指定它的值了。
而DB2中的identity也提供了多种策略,具体的可以去查DB2手册,我们举例如下:
我们先删掉上次我们建立的表格:
db2 => drop table category
然后建立表单
复制代码 代码如下:

Create table category
(
CategoryID INTEGER Primary Key Generated Always as Identity
(Start With 1 Increment by 1 minvalue 0 maxvalue 999999999
no cycle cache 5 no order),
CateogryName VARCHAR(50) Not Null,
Eligibility VARCHAR(250)
)

黑体字中identity中的语句你都能在DB2的手册中查到,都是自然语言一看就懂了。
有时候你并不只想去做数字的填充,你可能还想处理一些字母,那么下边这个转换大写的例子就是给你的:
db2 => alter table category add column
UpperCatName VARCHAR(50) generated always as (upper(CategoryName))
关于这些在DB2的文档里都有具体说明。