1、把主键定义为自动增长标识符类型
在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:
create table customers(id int auto_increment primary key not null, name varchar(15));
insert into customers(name) values("name1"),("name2");
select id from customers;
以上sql语句先创建了customers表,然后插入两条记录,在插入时仅仅设定了name字段的值。最后查询表中id字段,查询结果为:
id
1
2
由此可见,一旦把id设为auto_increment类型,mysql数据库会自动按递增的方式为主键赋值。
在MS SQLServer中,如果把表的主键设为identity类型,数据库就会自动为主键赋值。例如:
create table customers(id int identity(1,1) primary key not null, name varchar(15));
insert into customers(name) values("name1"),("name2");
select id from customers;
查询结果和mysql的一样。由此可见,一旦把id设为identity类型,MS SQLServer数据库会自动按递增的方式为主键赋值。identity包含两个参数,第一个参数表示起始值,第二个参数表示增量。
在DB2中,如果把表的主键设置为:
UserID integer not null generated always as identity (start with 1,increment by 1),
2、从序列中获取自动增长的标识符
1、序列定义
ORACLE:
CREATE SEQUENCE <sequence_name>
INCREMENT BY <integer>
START WITH <integer>
MAXVALUE <integer> / NOMAXVALUE
MINVALUE <integer> / NOMINVALUE
CYCLE / NOCYCLE
CACHE <#> / NOCACHE
ORDER / NOORDER;
DB2:
CREATE SEQUENCE <sequence-name>
AS data-type 默认 As Integer
START WITH <numeric-constant>
INCREMENT BY <numeric-constant> 默认 INCREMENT BY 1
MINVALUE <numeric-constant> | NO MINVALUE 默认 NO MINVALUE
MAXVALUE <numeric-constant> | NO MAXVALUE 默认 NO MAXVALUE
NO CYCLE | CYCLE 默认 NO CYCLE
CACHE <numeric-constant> | NO CACHE 默认 CACHE 20
NO ORDER | ORDER 默认 NO ORDER
2、序列取值
取下一个值:
ORACLE: 序列.NEXTVAL
DB2: NEXTVAL FOR 序列 或 NEXT VALUE FOR 序列
取当前值:
ORACLE: 序列.CURRVAL
DB2: PREVIOUS VALUE FOR 序列 或 PREVVAL FOR 序列
3、序列设置开始值
ORACLE:取得下一个值;先设置步长(下一个值 与 设置的开始值之间差);取得下一个值;再把步长修改成原来值
DB2:ALTER SEQUENCE 序列名 RESTART WITH 下一值
4、修改
ORACLE:
修改最大值 ALTER SEQUENCE <sequence_name> MAX VALUE <integer>
修改最小值: ALTER SEQUENCE <sequence_name> MIN VALUE <integer> (此值需要比当前值小)
修改步长: ALTER SEQUENCE <sequence_name> INCREMENT BY <integer>;
修改CACHE值: ALTER SEQUENCE <sequence_name> CACHE <integer> | NOCACHE
修改循环属性: ALTER SEQUENCE <sequence_name> <CYCLE | NOCYCLE>
修改排序属性:ALTER SEQUENCE <sequence_name> <ORDER | NOORDER>
DB2:
修改最大值: ALTER SEQUENCE <sequence_name> MAX VALUE <numeric-constant> | NO MAXVALUE
修改最小值: ALTER SEQUENCE <sequence_name> MIN VALUE <numeric-constant> | NO MINVALUE (此值需要比当前值小)
修改步长: ALTER SEQUENCE <sequence_name> INCREMENT BY <numeric-constant>;
修改CACHE值: ALTER SEQUENCE <sequence_name> CACHE <numeric-constant> | NO CACHE
修改循环属性: ALTER SEQUENCE <sequence_name> <CYCLE | NO CYCLE>
修改排序属性:ALTER SEQUENCE <sequence_name> <ORDER | NO ORDER>
从新计数: ALTER SEQUENCE <sequence_name> RESTART | RESTART WITH <numeric-constant>
5、DROP
ORACLE: DROP SEQUENCE <sequence_name>;
DB2: DROP SEQUENCE <sequence_name>;
6、例句
CREATE SEQUENCE JOBSHOW_SEQ
AS INTEGER
CACHE 20
MAXVALUE 999999
ORDER;
CREATE SEQUENCE JOBWORK_SEQ
AS INTEGER
CACHE 20
MAXVALUE 999999
ORDER;
CREATE SEQUENCE YN_SEQ
AS INTEGER
MAXVALUE 99999999;
select yn_seq.nextval from YNZP_JOB_JOBINFO
select nextval for KFCMCC_SEQ from sysibm.sysdummy1
分享到:
相关推荐
用触发器设置db2 字段自增长,我已经测试过了,很好用
自己整理的DB2函数大全,希望对学习和使用DB2的兄弟们能有所帮助
DB2 怎么使用语句自动产生数据库 尤其当数据库没有测底删掉成功的时候
本文介绍了IBM DB2数据复制和迁移方法。
db2驱动
自己写的,使用CRONTAB定时调用脚本,自动备份DB2数据的方案
oracle 和 db2的主要区别
IBM DB2 10.5 for Linux, UNIX, and Windows LinuxMWindowsODDB2 20M\mkE
数据库db2及Oracle的自动备份:注意备份时的命名习惯;目标数据库--备份---可选择‘全备,增量、累积’‘联机、脱机’
DB2DB2DB2DB2DB2DB2DB2DB2DB2
自己编写的db2备份脚本,在linux测试过,绝对好用!
DB2 11.5版本 jdbc db2jcc db2jcc4驱动。包含了所需的所有jar,新版jar命名为db2jcc4
DB2数据库性能调整和优化(第2版)侧重于介绍DB2数据库的性能调优。性能调优是一个系统工程:全面监控分析操作系统、I/O性能、内存、应用及数据库才能快速找到问题根源;深刻理解DB2的锁及并发机制、索引原理、数据库...
db2驱动包 db2jcc4.jar db2jcc4.jar db2java.jar db2jcc_javax.jar db2jcc_license_cisuz.jar db2jcc_license_cu.jar db2policy.jar,压缩包无加密,可以放心下载,良心资源。
有bash shell和python两种语言混合开发。交互模式,可以提示用户输入创建数据库相关的信息,自动帮您生成建库脚本。之所以使用方便,是因为完全省去了人工换算表空间容器页大小,页数量换算操作,而且自动处理buffer...
DB2的日志清理工作,db2 list history archive log all for CISFEDB 查看归档时间戳以及归档日志个数,Number of matching file entries = 6 表示有效日志个数 5.1、db2 force application all 停连接会话
db2db2db2db2db2db2db2
使用db2top和db2advis生成索引建议
DB2服务端和客户端软件_版本10.1.rar 下载 百度网盘地址
db2数据库安装包 db2数据库链接服务器驱动 db2数据库安装方法