前言

众所周知,MySQL数据库的主键自增设置非常简单,任何一个常用的可视化工具都支持,只要打一下勾就可以开启主键自增了。然而Oracle并没有那么简单,它需要执行几个简短语句。

操作步骤

为了方便讲解,SQL脚本中的表用 tableName,主键为 id

1. 创建序列sequence

sequence命名建议为表名_主键_seq,因为oracle会把所有的sequence放到同一张表里,若不好好区分,非常容易发生创建sequence冲突。

create sequence tableName_id_seq
-- 从主键从1开始minvalue 1
-- 不设置最大值nomaxvalue
-- 每次增加1increment by 1nocache;

2. 创建触发器trigger

trigger命名规范同sequence,必须要先创建sequence,再创建触发器。建议不要两个语句同时运行,多数情况语句会并发进行,trigger创建时若sequence没有先创建完成,执行结果是两条语句都成功,但实际操作时会导致主键自增失败。

create trigger tableName_id_tribefore insert on tableName for each row when (new.id is null)
beginselect tableName_id_seq.nextval into:new.id from dual;
end;

3. Mybatis-plus (根据自己使用的ORM框架而定)

主键类型设置为自增
@TableId(type=IdType.AUTO)

设置主键自增常用辅助语句

1. 查询当前最大的主键id序号

select max(id) from tableName;

2. 查看sequence的详细信息

table_id_seq指是自己设置的sequence名称

select * from USER_SEQUENCES where SEQUENCE_NAME = 'table_id_seq';

3. 设置last_number

注意:这个你不一定有权限能修改,除非你就是管理员用户

update user_sequence set last_number 200 where SEQUENCE_NAME = 'table_id_seq';

4. 删除sequence

drop sequence table_id_seq;

5. 查看全部sequence

select * from USER_SEQUENCES;

6. 查看全部触发器

select trigger_name,table_name from all_triggers where table_name = 'tableName';

7. 删除trigger

drop trigger table_id_tri

oracle主键自增相关推荐

  1. mybatis 实现oracle主键自增的机制

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

  2. oracle自增主键用途,Oracle主键自增

    在设置主键自增时有几种方法,今天介绍其中一种方法:sequence+trigger 1.创建表 create table tbl_card --创建校园卡表 ( id int primary key, ...

  3. 1、Oracle主键自增、清0,与用户授权

    1.相关命令: ​ sqlplus /nolog 查看Oracle数据库是否安装成功 ​ conn uid/ups@orcl 连接数据库::uid是用户名.ups是密码,orcl是数据库名 ​ 通过S ...

  4. mybatis-puls 集成oracle 主键自增

    oracle通过mybatis-puls新增数据时,主键自增不同于MySQL添加注解,oracle需要进行配置 1,创建表 2,创建序列 create sequence XXX_SEQ INCREME ...

  5. Mybatis 中Oracle主键自增设置

    Oracle中不存在mysql那种主键自增的设计 1. 序列+selectKey标签 Oracle新建序列 CREATE SEQUENCE [序列名称] INCREMENT BY 1 /**每次自增1 ...

  6. oracle主键自增触发器编写

    1.创建自增序列 create sequence 序列名 minvalue 1 nomaxvalue  increment by 1  start with 1 nocache; 2.创建对应表的触发 ...

  7. oracle hibernate 主键,hibernate oracle 主键 自增

    Hibernate 实现对oracle 数据库表ID的自动增长 1:建表 Create      table        test_table       ( id      integer     ...

  8. oracle主键可以自增吗,设置Oracle主键自增

    oracle没有设置主键auto increment的功能,需要自己编写序列和触发器实现主键自动递增. 示例: 创建表menu: create table menu( menuId number(10 ...

  9. oracle主键自增 数据插入时主键自增

    1.建表 create table overseas_users(overseas_id varchar2(10) not null primary key, --主键name varchar2(50 ...

最新文章

  1. 2020中国一流大学名单(27所)和中国大学综合实力300强出炉!
  2. SCSI软件层对性能的影响
  3. ubuntu之路——day8.4 Adam自适应矩估计算法
  4. iBatis resultMap出错 The error happened while setting a property on the result object 解决办法
  5. io-同步 异步 阻塞 非阻塞
  6. 17/100. Maximum Subarray
  7. [html] 使用div+css进行布局有什么好处?
  8. 全国计算机等级考证管理系统,猎证全国计算机等级考试学习系统
  9. MMU页表的内存消耗
  10. Appcan将支持在线编译提交App Store
  11. sql转义模块php,sql注入与转义的php函数代码_php技巧
  12. Spss 的基本方法使用步骤
  13. 计算机网络介绍,TCP协议,Socket网络编程
  14. django基础(四)详解Views视图层
  15. c++ 的interface
  16. 如何部署软件 - 让你团队的部署像地狱一样无聊且毫无压力
  17. 互联网 必须有免费的精神
  18. PYTHON-模块 re subprocess
  19. Linux 下使用 sem_t 有名信号量的注意事项
  20. 2020年 Web 开发的最佳编程语言

热门文章

  1. 标签打印软件如何打印指定页码
  2. mysql常用语句【转载】
  3. android:scaleType=“centerCrop”
  4. SqlServer 删除索引语句
  5. Android多效果轮播器/Banner实现,支持无限轮播、自动切换、指示器动画
  6. 计算机音乐带你去旅行数字乐谱,带你去旅行(抖音热门歌曲,校长)钢琴谱钢琴简谱数字谱钢琴双手简谱.pdf...
  7. 【记录】使用在线KMS激活win10系统
  8. 猎头操作过程及技巧--ZT
  9. 视频播放破亿,抖音近期的流量密码是什么
  10. Kinect 开发小记:穿越艾泽拉斯,调戏红龙女王