Oracle数据库主键自增

在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。

两种方法的基础都有一个概念就是序列(sequence)的概念,一种是利用序列显式调用的方式去实现主键自增,另一种是通过序列触发器(trigger)来实现主键自增。

/*1.利用序列主键自增*/

  1. 第一步、创建表

--创建表,主键为ID

CREATE TABLE YFF (

ID INT primary key ,

NAME VARCHAR2(10)

);

--创建表的格式

CREATE TABLE 表名(

字段名 字段类型(可以加一些约束,例如主键约束),

字段名 字段类型

)

  1. 第二步、创建序列

--创建序列

create sequence seq_yff

start with 1

increment by 1;

--创建序列的格式

create sequence 序列名称

start with 开始数字

increment by 增长数字

minvalue 最小值

maxvalue 最大值

cycle 是否循环(cycle为循环,nocycle为不循环)

nocache  不使用缓存

  1. 关于序列的其他重要操作

--查询序列(利用nextval查询序列下一次的值)

select seq_yff.nextval from dual;

--查询序列的格式

Select 序列名.nextval from dual

(dual为伪表,当我们不需要从具体的表来取得表中数据,而是单纯地

得到一些我们想得到的信息,就可以使用伪表)

注意:这里第一次执行这条查询语句得到结果为1,再执行得到2,第一种实现主键自增的方法就是使用序列名.nextval使得值一直增加的

--删除序列()

DROP SEQUENCE seq_yff;

注意:序列和表不是连接在一起的,当序列创建之后,用在这个表之后,我将该表删除,但是序列的值还是停留在之前的值上,所以需要注意这个问题

  1. 第三步、利用序列+显式化调用 进行自增

insert into YFF values (seq_yff.nextval,'张三');

insert into YFF values (seq_yff.nextval,'张三');

select * from YFF;

--2利用序列+触发器调用 进行主键自增

此处已经表和序列都用第一种方法中使用过的

 第一步、在表和序列创建好之后,创建触发器

--创建触发器

create or replace trigger tri_yff_insert

before insert on YFF

referencing old as old new as new

for each row

begin

select seq_yff.nextval

into :new.ID

from dual;

end tri_yff_insert;

--创建触发器格式

create [or replace] tigger 触发器名

触发时间 触发事件

on 表名

[for each row]

begin

pl/sql语句

end

--解释上面的触发器语句

create or replace trigger tri_yff_insert    创建触发器并命名

before insert on YFF              触发时间为向表YFF中插入时

referencing old as old new as new

for each row      对表的每一行触发一次,否则只对整表执行一次

begin

select seq_yff.nextval

into :new.ID

from dual;

end tri_yff_insert;

  1. 其他对触发器的操作

--查询表中触发器

select * from all_triggers WHERE table_name='YFF'

--删除触发器

drop trigger tri_yff_insert;

  1. 第二步、插入数据

insert into  YFF (ID,Name) values(100,'李四');

insert into  YFF (Name) values('李四');

--不管给不给主键赋值,这里触发器都会使得主键值为序列的值

Oracle数据库主键自增相关推荐

  1. Navicat:设置Oracle数据库主键自增

    一. 创建如下表 Oracle数据库不同于Mysql.Sql Server数据库,Oracle数据库主键自增不能在建表时直接设置,而是需要通过序列和触发器进行设置! 二.创建序列 create seq ...

  2. Mybatis使用Oracle数据库主键自增

    一.关于mysql和oracle主键自增 我们知道在mysql中主键设置为int类型,然后设置AUTO_INCREMENT,则在插入数据的时候mapper中的sql文件是可以不写主键这个字段,数据库就 ...

  3. Oracle数据库主键自增的两种方式(SEQUENCE和触发器)

    1.准备工作 创建oracle数据库表,用户表 SYS_USERS 其中user_id为主键 -- Create table create table SYS_USERS (user_id NUMBE ...

  4. oracle数据库主键自增序列_Oracle数据库主键自增

    Oracle数据库主键自增 在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增.下面 ...

  5. 数据库主键自增插入显示值

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/nwsuaf2009012882/article/details/32703597 SQL Serve ...

  6. mysql主键自增为什么在插入的时候还要自己写主键值_数据库主键自增插入显示值...

    SQL Server 2008 数据库主键自增插入显示值 前几天在工作的时候遇到在删除数据库中表的数据的时候,删除之后,重新添加的数据没有得到原来的数据的id值(表中id为主键,且设置为自增) ,使用 ...

  7. 数据库主键自增到最大值

    使用mysql数据库: 因为数据库主键增长到啦最大值,数据id达到了20亿,查询数据好像只有200万数据: int字段:数据的范围在-2^31~2^31-1 2^31-1 = 2147483647 u ...

  8. sequence解决oracle数据库主键不自增

    工作这么多年.总算遇到一家数据库用oracle的企业了,由于oracle与mysql的不同,mysql设置了主键(id),那他就会实现自增,插入数据时,无需指定id的值,但是oracle却无法实现主键 ...

  9. oracle数据库主键自增序列_Oracle数据库序列详解

    前言: 做过web开发的人员基本上都知道,数据库表中的主键值有的时候我们会用数字类型的并且自增.这样mysql.sql server中的都可以使用工具创建表的时候很容易实现.但是oracle中没有设置 ...

最新文章

  1. 聚合复合_【专家视觉】聚合物接枝多壁碳纳米管及其聚氨酯复合材料
  2. Web API之service worker
  3. 应用商店后台MIS的一些思考
  4. Maven-Dependency Mechanism
  5. Codeforces Round #277 (Div. 2) A. Calculating Function 水题
  6. 博主已开启评论精选什么意思_小白必看!想要成为小红书博主,首先要掌握4个工具!...
  7. 2021水电消纳交易电量增长超150% 价格已提高16%
  8. Flutter之ParentDataWidget和RenderObjectWidget详解
  9. 共享网络获取树莓派ip_树莓派网络设置
  10. hp 服务器 sd卡作用,用4张卡聊一聊SD卡规范
  11. C++ socket编程实例
  12. mac安装指定版本的ruby_Mac 下安装Ruby环境
  13. python--实现汇率转换
  14. wps下载的简历无法删除空白页
  15. TI DM36X 名词
  16. 2016 Unicode Conference拾遗(一)
  17. Android平台开发指导(Android Porting Guide)
  18. android App中bug收集的工具类
  19. MRC误码率的matlab仿真
  20. 拼夕夕买家订单数据提取

热门文章

  1. pos机 一直连接服务器,pos机刷卡一直在连接中是怎么回事
  2. TA大数据分析系统的高可用架构从设计到实现
  3. 《Context Encoding for Semantic Segmentation》论文笔记
  4. 初窥哥德尔不完备定理
  5. excel和csv区别pythonvin号_Python处理CSV,Excel,PDF和图片
  6. 发那科机器人override指令_发那科工业机器人:如何调整速度倍增器?——发那科工业机器人...
  7. python电脑上怎么下载-Python下载和安装图文教程[超详细]
  8. cron 表达式 1小时30分钟,100分钟执行一次
  9. 微信订单下单管理软件怎么样?好不好用?
  10. 音频翻译字幕中文在线怎么弄?不妨看看这三个方法