Oracle数据库设置主键自增

2025-10-01 19:30:16

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

CREATE TABLE YFF (

      ID INT primary key ,

      NAME VARCHAR2(10)

);

Oracle数据库设置主键自增

2、--创建序列  

       create sequence seq_yff

       start with 1

       increment by 1; 

--创建序列的格式

       create sequence 序列名称

start with 开始数字

increment by 增长数字

minvalue 最小值

maxvalue 最大值

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

nocache  不使用缓存

Oracle数据库设置主键自增

3、关于序列的其他重要操作

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

       select seq_yff.nextval from dual;

      

--查询序列的格式

       Select 序列名.nextval from dual

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

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

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

       --删除序列()

       DROP SEQUENCE seq_yff;

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

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

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

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

       select * from YFF; 

Oracle数据库设置主键自增

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

 --创建触发器

      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

Oracle数据库设置主键自增

2、解释上面的触发器语句

    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、第二步、插入数据

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

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

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

Oracle数据库设置主键自增

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢