DB2 自动递增字段实现方法
程序员文章站
2022-06-17 19:22:57
使用这个一般是用作识别码的,当做定义表格的主键。generated语法则可以自定义你想怎么产生这个值的策略。 语法如下: column definition generated {always | b...
使用这个一般是用作识别码的,当做定义表格的主键。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的文档里都有具体说明。
语法如下:
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的文档里都有具体说明。
上一篇: DB2编程序技巧(1)
下一篇: oracle TFA 升级实例讲解