接触DB2还没有多久,最近的项目中 需要创建一个表,表的主键自增长,毕竟跟Oracle有点不一样啊!

CREATE  TABLE

T_RUNNING_THREAD

(

IDINTEGER NOT NULLGENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1 ),

NAME VARCHAR(150),

BEGINTIME VARCHAR(50),

ENDTIME VARCHAR(50),

DESC VARCHAR(4000),

SUCCESSFLAG CHARACTER(1),

PRIMARY KEY (ID)

)

上网找了方法,原来加上GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1 )这句就行了,特此记录一下!

start with 1 :就是从1开始

increment by 1 :每次自增1

以下是从网上找到资料:

———————————————————————————————————————————-

DB2 Identity字段 与 sequence:

Identity字段与sequence的最大不同在于:identity只能在一个表中使用,多个表不可以共享identity;而sequence可以通过命名方式在同一个数据库内部的多个表中共享序列号发生器

生成数字序列的两种方法

在 DB2 中可以用两种方法自动生成一个数字序列:

定义带有 IDENTITY 属性的列。

创建 SEQUENCE 对象。

IDENTITY 列

当用 IDENTITY 属性定义表的列时,每当将一行插入表时,就会自动为该列生成一个数值。

SEQUENCE 对象

让 DB2 自动生成数字序列的第二种方法是创建 SEQUENCE 对象。可以使用序列表达式(sequenceexpression)来引用序列对象。序列表达式可以出现在表达式能够出现的大多数位置。序列表达式可以指定要返回的值是新生成的值还是以前生成的值。

如果序列引用是针对下一值(nextvalue),就会为序列自动生成一个数值,并将该数值作为序列表达式的结果返回。例如,如果我们假设已经创建了名为orders_seq的序列,该序列表达式就返回为序列生成的下一个值:

NEXT VALUE FOR orders_seq

如果序列引用是针对 前一值(previous value),那么会将前一个SQL语句中为序列生成的数值作为序列表达式的结果返回。该序列表达式返回由序列生成的前一个值:

PREVIOUS VALUE FOR orders_seq

注:当 DB2 UDB 引入序列时,曾支持非 SQL 标准语法 NEXTVAL 代替 NEXT VALUE ,以及PREVVAL代替 PREVIOUS VALUE 。这些变体继续受到支持。

在标识和序列之间做出选择

虽然标识和序列都用于生成数值,但您也许要根据特殊情况选择使用一种来代替另一种。

在以下情况下,标识列很有用:

表中只有一列需要自动生成的值

每一行都需要独立的值

用×××来产生表的主键

生成新值的进程与对表的插入操作紧密联系,无论插入操作是如何发生的

在以下情况下,序列对象很有用:

要将从一个序列生成的值存储到多个表中

每个表有多个列需要自动生成的值(可能通过使用同一个序列或多个序列为每一行生成多个值)

生成新值的进程与任何对表的引用无关

与序列对象不同,标识列是在表上定义的,因此需要某些限制。每个表最多只能有一个标识列。当创建一个列作为标识列时,对于该列必须使用确切的数字数据类型。因为标识属性为列生成一个值,这类似于DEFAULT子句所做的,所以在定义标识列时不能指定 DEFAULT 子句。标识列被隐式地定义成 NOT NULL 。

db2主键自增和oracle,DB2主键自增长设置(id自增)相关推荐

  1. mybatis-plus设置id自增,插入数据。

    mybatis-plus设置id自增,插入数据 没修改前 没修改前 这是我的实体类. @Data @AllArgsConstructor @NoArgsConstructor @ToString pu ...

  2. oracle 主键能加索引吗,Oracle 添加主键和索引

    数据的主键和索引一般情况下都是必须的,特别是表有大量数据的时候,索引和主键更是必不可少,这样可以提供数据的查询效率: 一.创建表的同时创建主键约束 (1)无命名 create table studen ...

  3. oracle查看外键约束哪个字段,oracle 查看主外键约束(转)

    oracle 查看主外键约束(转) 上一篇 / 下一篇  2011-07-05 17:37:49 / 个人分类:数据库 select a.constraint_name, a.table_name, ...

  4. oracle外键约束强行insert,oracle 禁用外键约束

    1.ORACLE数据库中的外键约束名都在表user_constraints中可以查到.其中constraint_type='R'表示是外键约束. 2.启用外键约束的命令为:alter table ta ...

  5. Oracle/Kingbase中用序列和触发器实现ID自增

    在设计数据库的时候,Oracle中没有类似SQL Server中系统自动分配ID作为主键的功能,这时Oracle可以通过"序列"和"触发器"来实现ID自动增加的 ...

  6. sql server 数据库 设置id 自增

    目录 一,建表时设置 1.1 建表时 1.1.1 通过可视化设置数据表主键自增 1.1.2 通过SQL语句 创建自增 二,建表后设置 问题分析: 问题解决: SQL server 设置列自增长 一,建 ...

  7. oracle中主键创建的语法,Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

  8. oracle数据库新建表增加表序列,设置id自增

    1,oracle数据库增加新表时,设置表id为自增 最小1 最大9999999999 CREATE SEQUENCE "数据库名称"."SEQ_表名称" MIN ...

  9. Mysql如何设置id自增

    (1)设置自增 方案一: CREATE TABLE IF NOT EXISTS `user`(`id` INT UNSIGNED AUTO_INCREMENT,`name` VARCHAR(100) ...

最新文章

  1. 使用Python,dlib中新型、更快、更小的5点面部标志检测器检测人脸、眼睛、鼻子
  2. Python爬虫之足球小将动漫(图片)下载
  3. Android 8.1 源码_启动篇(一) -- 深入研究 init(转 Android 9.0 分析)
  4. css考核点整理(十一)-响应式开发经验,响应式页面的三种核心技术是什么
  5. 聪明的木匠(优先队列,思维)
  6. P7097-[yLOI2020]牵丝戏【dp】
  7. Win7上Git安装及配置过程 [转]
  8. 微信小程序page设定css,微信小程序——启动,渲染与Page
  9. matlab杜哈梅尔积分,非平稳地震作用下桥梁系统碰撞间隙宽度的概率评价方法与流程...
  10. 博文视点大讲堂28期 “助你赢在软件外包行业”成功举办
  11. opengl大作业c语言,openGL-计算机图形大作业中出现的几个错误及解决
  12. python游戏开发引擎_【图片】有关Ren'Py引擎的游戏制作汉化教程【linux游戏吧】_百度贴吧...
  13. es java 模糊查询_java使用elasticsearch进行模糊查询
  14. android 获取手机的MAC地址
  15. oracle expdp作业外表报错ORA-20011KUP-11024ORA-29913
  16. 2020牛客国庆集训派对day1 ------ ABB(马拉车裸题 + 条件判断)
  17. Logistic Regression逻辑回归函数Python实现
  18. Pytest如何查找用例耗时最长的N个
  19. 文件上传漏洞靶场upload-labs学习(pass11-pass15)
  20. [微信小程序开发者工具] × #initialize-error: Error: ENOENT: no such file or directory, open

热门文章

  1. 海量运维、运营规划之道
  2. GPS时钟同步系统在电力系统的重要性
  3. PHP 计算页面执行时间
  4. 室外定位_为什么老师应该走出自己的舒适区而进入室外
  5. 应用迁移方案_Kubernetes如何成为迁移旧版应用程序的解决方案
  6. ipsec加密技术谁提出的_如何提出技术问题以获得高质量的答案
  7. Python 小入坑
  8. HTML min/maxlength
  9. pillow是python的图像处理标准库_详解Python图像处理库Pillow常用使用方法
  10. PX4代码解析(2)