Oracle数据库主键自增

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

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

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

第一步、创建表

--创建表,主键为ID

CREATE TABLE YFF (

ID INT primary key ,

NAME VARCHAR2(10)

);

--创建表的格式

CREATE TABLE 表名(

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

字段名 字段类型

)

第二步、创建序列

--创建序列

create sequence seq_yff

start with 1

increment by 1;

--创建序列的格式

create sequence 序列名称

start with 开始数字

increment by 增长数字

minvalue 最小值

maxvalue 最大值

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

nocache  不使用缓存

关于序列的其他重要操作

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

select seq_yff.nextval from dual;

--查询序列的格式

Select 序列名.nextval from dual

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

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

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

--删除序列()

DROP SEQUENCE seq_yff;

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

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

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;

其他对触发器的操作

--查询表中触发器

select * from all_triggers WHERE table_name='YFF'

--删除触发器

drop trigger tri_yff_insert;

第二步、插入数据

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

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

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

oracle数据库主键自增序列_Oracle数据库主键自增相关推荐

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

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

  2. oracle数据库主键自增序列_oracle数据库ID自增长--序列

    什么是序列?在mysql中有一个主键自动增长的id,例如:uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长,两者功能是一样的,只是 ...

  3. oracle+数据到+mysql数据库乱码_oracle数据mysql数据库乱码

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  4. oracle 主键自增函数_Oracle数据库中创建自增主键的实例教程

    在设计数据库表的时候发现Oracle没有自增主键的设置,Google了解到Oracle本身并不支持自增主键,需要通过序列(Sequence)和触发器(Trigger)实现. 创建表Student Cr ...

  5. oracle 主键自增函数_oracle 实现主键自增

    -- 创建表 drop table test; create table test(id number(10), name varchar2(10)); -- 创建对列 drop sequence s ...

  6. oracle数据库主键自增序列_【oracle】oracle数据库建立序列、使用序列实现主键自增...

    2.建立序列 -- Create sequence create sequence SEQ_SHIP_IMAGE minvalue 20 maxvalue 999999999999999999 sta ...

  7. oracle datafile损坏,Oracle某个数据文件损坏,如何打开数据_oracle

    某个数据文件损坏,如何打开数据库? 系统环境: 1.操作系统:Windows 2000 Server,机器内存128M 2.数据库: oracle 8i R2 (8.1.6) for NT 企业版 3 ...

  8. impdp oracle 只导入表结构_Oracle数据导入导出(expdp impdp)

    oracle数据泵的使用方式, 以及数据泵命令的参数说明 使用expdp和impdp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用. 2.expdp ...

  9. jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

最新文章

  1. java servlet 参数乱码_JSPServlet处理参数中的中文乱码总结
  2. 寻找UHRR(universal human reference RNA)的表达谱
  3. R语言构建xgboost模型:基于叶子索引衍生出新的特征并进行独热编码(one-hot encoding)之后构建新的模型、比较加入叶子索引特征的模型的分类性能提升
  4. python的序列包括什么_一文读懂什么是序列 (sequence)
  5. 知识图谱(六)——关系抽取
  6. TMS320C6678上电配置和FPGA复位DSP
  7. python networkx包,使用Python中NetworkX包绘制深度神经网络结构图
  8. matlab excel 进程,Matlab使用xlsread, xlswrite函数导致excel进程无法终止的问题
  9. java中== 和 .equals()的区别
  10. 使用Perl进行网页数据抓取[初学者简明版]
  11. x86 x64 arm64的区别
  12. c python函数图像_python画正余弦函数图像?
  13. Web 字体应用指南最佳实践修炼之道(上)
  14. 《现代命令行工具指南》10. 管理工具:在隔离环境中安装和运行 Python 命令行工具 - Pipx
  15. Windows 那些坑
  16. 如果相关不意味着因果,那么什么意味着? ——大数据时代的“因果关系”思辨
  17. ByteV搭建动态数字孪生网络安全平台----助力网络安全发展
  18. 网易传媒数据指标体系建设实践
  19. 如何真正认识 Linux 系统结构?这篇文章告诉你
  20. python word 创建超链接

热门文章

  1. [勇者闯LeetCode] 190. Reverse Bits
  2. 「每日分享」Java程序员的荣光,听R大论JDK11的ZGC
  3. [5/101] 101次面试之经典面试题
  4. 【Katalon学习一】Katalon Studio入门指南
  5. 汇智周刊第39期发布,2022年第27期!
  6. vue2.0的初始项目的建立
  7. 【笔记】Opencv 实现拼图板小游戏
  8. 阿里开发规范【转载】
  9. HTTPS 加密原理
  10. 桥梁防碰撞预警系统有用吗?——喜讯科技