首页 > 电脑专区 > 电脑教程 >

Oracle数据库设置主键自增

来源:互联网 2023-02-21 20:29:27 312

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

两种方法的基础都有一个概念就是序列(sequence)的概念,一种是利用序列和显式调用的方式去实现主键自增,另一种是通过序列和触发器(trigger)来实现主键自增。BUR办公区 - 实用经验教程分享!

工具/原料

  • Oracle数据库
  • 编译工具

利用序列主键自增

  • 1

    第一步、创建表 --创建表,主键为IDBUR办公区 - 实用经验教程分享!

    CREATE TABLE YFF (BUR办公区 - 实用经验教程分享!

    ID INT primary key ,BUR办公区 - 实用经验教程分享!

    NAME VARCHAR2(10)BUR办公区 - 实用经验教程分享!

    );BUR办公区 - 实用经验教程分享!

    Oracle数据库设置主键自增BUR办公区 - 实用经验教程分享!

  • 1该信息未经授权抓取自百度经验
  • 2

    --创建序列BUR办公区 - 实用经验教程分享!

    create sequence seq_yffBUR办公区 - 实用经验教程分享!

    start with 1BUR办公区 - 实用经验教程分享!

    increment by 1;BUR办公区 - 实用经验教程分享!

    BUR办公区 - 实用经验教程分享!

    --创建序列的格式BUR办公区 - 实用经验教程分享!

    create sequence序列名称BUR办公区 - 实用经验教程分享!

    start with开始数字BUR办公区 - 实用经验教程分享!

    increment by增长数字BUR办公区 - 实用经验教程分享!

    minvalue最小值BUR办公区 - 实用经验教程分享!

    maxvalue最大值BUR办公区 - 实用经验教程分享!

    cycle 是否循环(cycle为循环,nocycle为不循环)BUR办公区 - 实用经验教程分享!

    nocache 不使用缓存BUR办公区 - 实用经验教程分享!

    Oracle数据库设置主键自增BUR办公区 - 实用经验教程分享!

  • 3

    关于序列的其他重要操作BUR办公区 - 实用经验教程分享!

    --查询序列(利用nextval查询序列下一次的值)BUR办公区 - 实用经验教程分享!

    select seq_yff.nextval from dual;BUR办公区 - 实用经验教程分享!

    BUR办公区 - 实用经验教程分享!

    --查询序列的格式BUR办公区 - 实用经验教程分享!

    Select 序列名.nextval from dualBUR办公区 - 实用经验教程分享!

    (dual为伪表,当我们不需要从具体的表来取得表中数据,而是单纯地BUR办公区 - 实用经验教程分享!

    得到一些我们想得到的信息,就可以使用伪表)BUR办公区 - 实用经验教程分享!

    BUR办公区 - 实用经验教程分享!

    注意:这里第一次执行这条查询语句得到结果为1,再执行得到2,第一种实现主键自增的方法就是使用序列名.nextval使得值一直增加的BUR办公区 - 实用经验教程分享!

    BUR办公区 - 实用经验教程分享!

    --删除序列()BUR办公区 - 实用经验教程分享!

    DROP SEQUENCE seq_yff;BUR办公区 - 实用经验教程分享!

    注意:序列和表不是连接在一起的,当序列创建之后,用在这个表之后,我将该表删除,但是序列的值还是停留在之前的值上,所以需要注意这个问题BUR办公区 - 实用经验教程分享!

  • 4

    第三步、利用序列 显式化调用 进行自增BUR办公区 - 实用经验教程分享!

    insert into YFF values (seq_yff.nextval,'张三');BUR办公区 - 实用经验教程分享!

    insert into YFF values (seq_yff.nextval,'张三');BUR办公区 - 实用经验教程分享!

    select * from YFF;BUR办公区 - 实用经验教程分享!

    Oracle数据库设置主键自增BUR办公区 - 实用经验教程分享!

  • 利用序列 触发器调用 进行主键自增

  • 1

    第一步、在表和序列创建好之后,创建触发器BUR办公区 - 实用经验教程分享!

    --创建触发器BUR办公区 - 实用经验教程分享!

    create or replace trigger tri_yff_insertBUR办公区 - 实用经验教程分享!

    before insert on YFFBUR办公区 - 实用经验教程分享!

    referencing old as old new as newBUR办公区 - 实用经验教程分享!

    for each rowBUR办公区 - 实用经验教程分享!

    beginBUR办公区 - 实用经验教程分享!

    select seq_yff.nextvalBUR办公区 - 实用经验教程分享!

    into :new.IDBUR办公区 - 实用经验教程分享!

    from dual;BUR办公区 - 实用经验教程分享!

    end tri_yff_insert;BUR办公区 - 实用经验教程分享!

    BUR办公区 - 实用经验教程分享!

    --创建触发器格式BUR办公区 - 实用经验教程分享!

    create [or replace] tigger 触发器名BUR办公区 - 实用经验教程分享!

    触发时间 触发事件BUR办公区 - 实用经验教程分享!

    on 表名BUR办公区 - 实用经验教程分享!

    [for each row]BUR办公区 - 实用经验教程分享!

    beginBUR办公区 - 实用经验教程分享!

    pl/sql语句BUR办公区 - 实用经验教程分享!

    endBUR办公区 - 实用经验教程分享!

    Oracle数据库设置主键自增BUR办公区 - 实用经验教程分享!

  • 2

    解释上面的触发器语句BUR办公区 - 实用经验教程分享!

    create or replace trigger tri_yff_insert 创建触发器并命名BUR办公区 - 实用经验教程分享!

    before insert on YFF 触发时间为向表YFF中插入时BUR办公区 - 实用经验教程分享!

    referencing old as old new as newBUR办公区 - 实用经验教程分享!

    for each row 对表的每一行触发一次,否则只对整表执行一次BUR办公区 - 实用经验教程分享!

    beginBUR办公区 - 实用经验教程分享!

    select seq_yff.nextvalBUR办公区 - 实用经验教程分享!

    into :new.IDBUR办公区 - 实用经验教程分享!

    from dual;BUR办公区 - 实用经验教程分享!

    end tri_yff_insert;BUR办公区 - 实用经验教程分享!

  • 3

    第二步、插入数据BUR办公区 - 实用经验教程分享!

    insert into YFF (ID,Name) values(100,'李四');BUR办公区 - 实用经验教程分享!

    insert into YFF (Name) values('李四');BUR办公区 - 实用经验教程分享!

    --不管给不给主键赋值,这里触发器都会使得主键值为序列的值BUR办公区 - 实用经验教程分享!

    Oracle数据库设置主键自增BUR办公区 - 实用经验教程分享!

  • 注意事项

    • 码字不易,记得点赞和投票哦!

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!BUR办公区 - 实用经验教程分享!


    标签: oracle数据库操作系统数据设置

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码