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序列和主键自增长的更多相关文章

  1. oracle数据库表用序列实现主键自增长

    原理注意:序列和触发器必须建立在同一个用户名下否则运行出错1.建立数据表create table 表名(           userid number(10) primary key,        ...

  2. Mybatis 操作数据库的主键自增长

    本篇文章将研究mybatis 实现oracle主键自增的机制 首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的 在mysql中 crea ...

  3. oracle,mybatis主键自增长

    <insert id="insert" parameterType="resource"> <selectKey resultType=&qu ...

  4. Oracle实现主键自增长

    -- 主键设置:xx_id number(24) primary key 1 create sequence XX_seq --序列名称 increment by 1 -- 每次加几个 start - ...

  5. oracle 主键自动增长

    oracle 主键自动增长 2009-12-11 16:07:00|  分类: 数据库资料|字号 订阅     这几天搞Oracle,想让表的主键实现自动增长,查网络实现如下: create tabl ...

  6. JAVA中JPA的主键自增长注解设置

    JPA的注解来定义实体的时候,使用@Id来注解主键属性即可.如果数据库主键是自增长的,需要在增加一个注解@GeneratedValue,即: @GeneratedValue(strategy=Gene ...

  7. 使用pl/sql的文本导入器时如何设置主键自增长

    在使用文本导入器批量导入数据时,如果需要设置主键自增长,可以先创建一个序列: create sequence SEQ_Userinf start with 1 increment by 1nomaxv ...

  8. 更新oracle数据库表如何实现主键自增长

     在数据库中实现主键自动增长有利于我们做数据插入操作,在SQL SERVER上创建表时可以在int类型的字段后加上identity(1,1),该字段就会从1开始,按照+1的方式自增,将这个字段设置 ...

  9. Oracle 设置主键自增长__Oracle

    转自:https://yq.aliyun.com/ziliao/258074 如果想在Oracle数据库里实现数据表主键自增,我们似乎没有办法像MySql般直接定义列的属性来实现.不过对于这个数据库的 ...

随机推荐

  1. Failed to acquire connection "SAP_PRD_NEW.SAPSR3". Connection may not be configured correctly or you may not have the right permissions

    SQLSERVER JOB无法执行 错误提示: Message Executed as user: WORKGROUP\NSDZHSCMFP01$. Microsoft (R) SQL Server ...

  2. 添加setuptools脚本

    #!/usr/bin/env python """Setuptools bootstrapping installer. Maintained at https://gi ...

  3. VIM初掌握

    Vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版.它的最大特色是完全使用键盘命令进行编辑,脱离了鼠标操作虽然使得入门变得困难,但上手之后键盘的各种巧妙组合操作 ...

  4. Bugku——Flag在index里(http://120.24.86.145:8005/post/)

    Bugku——Flag在index里(http://120.24.86.145:8005/post/) 进入题目发现有一个file参数,查看源码,发现该参数可以包含php文件,并且题目提示,flag在 ...

  5. CentOS 7搭建Fabric,测试network_setup例子

    更新内核 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrep ...

  6. java 基础之--java动态代理

    1.抽象角色:声明真实对象与代理对象的共同接口: 2.代理角色:相当于中介的作用,bridge,内部包含对真实角色的reference,在执行真实操作对象时,附加其他操作,相当于对真实角色的封装: 3 ...

  7. Head First Servlets & JSP 学习笔记 第一章 —— 前言和体系结构

    URL,Uniform Resource Locatiors,统一资源定位符. http:// www.wickedlysmart.com :80 /beeradivice/select /beer1 ...

  8. 44-java断点调式dubug

    转自:https://www.cnblogs.com/mq0036/p/3780538.html Eclipse 的单步调试 1.设置断点在程序里面放置一个断点,也就是双击需要放置断点的程序左边的栏目 ...

  9. java中钩子方法的概念

    钩子方法源于设计模式中模板方法(Template Method)模式,模板方法模式的概念为:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中.模板方法使得子类可以在不改变算法结构的情况下,重新 ...

  10. bootstrap之双日历时间段选择控件—daterangepicker(汉化版)

    jQuerybootstrapdaterangepicker汉化版 双日历时间段选择插件 — daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自 ...