广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Oracle数据库设置主键自增

    来源:网络收集  点击:  时间:2024-02-28
    【导读】:
    在学习mysql时,我们很容易通过auto_increment就能实现主键自增的功能,但是在Oracle数据库中,是没有这个关键字的,所以也不能通过这样来实现主键自增。下面我就为大家介绍两种实现主键自增的方法。 两种方法的基础都有一个概念就是序列(sequence)的概念,一种是利用序列和显式调用的方式去实现主键自增,另一种是通过序列和触发器(trigger)来实现主键自增。工具/原料moreOracle数据库编译工具利用序列主键自增1/4分步阅读

    第一步、创建表 --创建表,主键为ID

    CREATE TABLE YFF (

    ID INT primary key ,

    NAME VARCHAR2(10)

    );

    2/4

    --创建序列

    create sequence seq_yff

    start with 1

    increment by 1;

    --创建序列的格式

    create sequence序列名称

    start with开始数字

    increment by增长数字

    minvalue最小值

    maxvalue最大值

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

    nocache 不使用缓存

    3/4

    关于序列的其他重要操作

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

    select seq_yff.nextval from dual;

    --查询序列的格式

    Select 序列名.nextval from dual

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

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

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

    --删除序列()

    DROP SEQUENCE seq_yff;

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

    4/4

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

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

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

    select * from YFF;

    利用序列+触发器调用 进行主键自增1/3

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

    --创建触发器

    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 tigger 触发器名

    触发时间 触发事件

    on 表名

    begin

    pl/sql语句

    end

    2/3

    解释上面的触发器语句

    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;

    3/3

    第二步、插入数据

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

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

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

    注意事项

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

    ORACLE数据库操作系统主键自增
    本文关键词:

    版权声明:

    1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

    2、本站仅提供信息发布平台,不承担相关法律责任。

    3、若侵犯您的版权或隐私,请联系本站管理员删除。

    4、文章链接:http://www.1haoku.cn/art_166827.html

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 03:16:47  耗时:0.028
    0.0277s