DB2序列和主键自增长
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序列和主键自增长的更多相关文章
- oracle数据库表用序列实现主键自增长
原理注意:序列和触发器必须建立在同一个用户名下否则运行出错1.建立数据表create table 表名( userid number(10) primary key, ...
- Mybatis 操作数据库的主键自增长
本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的 在mysql中 crea ...
- oracle,mybatis主键自增长
<insert id="insert" parameterType="resource"> <selectKey resultType=&qu ...
- Oracle实现主键自增长
-- 主键设置:xx_id number(24) primary key 1 create sequence XX_seq --序列名称 increment by 1 -- 每次加几个 start - ...
- oracle 主键自动增长
oracle 主键自动增长 2009-12-11 16:07:00| 分类: 数据库资料|字号 订阅 这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create tabl ...
- JAVA中JPA的主键自增长注解设置
JPA的注解来定义实体的时候,使用@Id来注解主键属性即可.如果数据库主键是自增长的,需要在增加一个注解@GeneratedValue,即: @GeneratedValue(strategy=Gene ...
- 使用pl/sql的文本导入器时如何设置主键自增长
在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequence SEQ_Userinf start with 1 increment by 1nomaxv ...
- 更新oracle数据库表如何实现主键自增长
在数据库中实现主键自动增长有利于我们做数据插入操作,在SQL SERVER上创建表时可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置 ...
- Oracle 设置主键自增长__Oracle
转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ...
随机推荐
- NBU 还原LINUX ORACLE RAC数据库(CRM)
CRM集群数据库恢复 linux centos 6.6 oracle 11.2.0.3 集群环境 1.53 oraclea 1.54 oracleb 在linux操作系统root用户下安装好NBUci ...
- codeblocks17.12 不能启动调试器
调试器需要手动指定. settings->debugger->default->executable path.这里默认空的,需要指定.路径在安装目录下的CodeBlocks\Min ...
- 游戏行业的女性拥有强大的新盟友:Facebook
据外媒 TheNextWeb 报道,Facebook 本周宣布其新的游戏行业女性倡议,致力于鼓励更多的女性加入游戏行业.这家社交媒体公司专注于提供榜样和成功故事,而这实际上是一种令人愉快的方式.虽然游 ...
- [剑指Offer]判断一棵树为平衡二叉树(递归)
题目链接 https://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=0&tqId=0&rp=2&a ...
- VTP
VTP VLAN中继协议(Vlan Trunking Protocol),是CISCO专用协议.VTP负责在VTP域内同步VLAN信息,这样就不必在每个交换机上配置相同的VLAN信息.VTP还提供一种 ...
- HBase数据库集群配置【转】
https://www.cnblogs.com/ejiyuan/p/5591613.html HBase简介 HBase是Apache Hadoop中的一个子项目,是一个HBase是一个开源的.分布式 ...
- [leetcode]122. Best Time to Buy and Sell Stock II 最佳炒股时机之二
Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...
- Bootstrap(11)列表组面板和嵌入组件
一.列表组组件列表组组件用于显示一组列表的组件.//基本实例 <ul class="list-group"> <li class="list-group ...
- linux minitools+minicom 安装及使用
1,通过SSH将minitools的安装包传到ubuntu 文件下, 2, 解压minitools.tgz (具体方法见上一篇) 3,命令安装minicom : apt-get insta ...
- webapi 设置不显示接口到swaggerUI
请添加如下属性: [ApiExplorerSettings(IgnoreApi = true)]