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

DB2
ASP.NET 2.0控件处理DB2 9应用程序之二
如何在AIX平台上把DB2V8升级到DB2V95
讲解七种数据库中Select Top的使用方法
Oracle教程:工具kfod的使用
Oracle数据库导入外部数据如何实现
浅谈解决DB2数据库代码页不兼容的方法
浅谈IBM DB2数据库如何迁移问题
DB2常用傻瓜问题1000问(之五)
DB2常用傻瓜问题1000问(之六)
DB2数据库的安装
IBM DB2 日常维护汇总(六)
DB2编程序技巧 (二)
DB2编程序技巧 (四)
DB2:数据同步方面的经验
DB2 UDB V8.1管理学习笔记(二)
DB2优化(简易版)
常见数据库系统之比较 - DB2数据库
DB2常用傻瓜问题1000问(之一)
DB2常用傻瓜问题1000问(之二)
DB2常用傻瓜问题1000问(之三)

DB2 自动递增字段实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 271 ::
收藏到网摘: 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的文档里都有具体说明。