oracle数据库实现id自增

半城伤御伤魂 提交于 2020-01-21 18:57:26

方式一:

1.通过sequence实现

2.sql如下:创建表sql和sequence

创建完成sql之后下面是插入数据sql:

效果展示如下:

方式二:

1.通过sequence+触发器实现

2.sql如下:

插入数据sql如下:

注意:这种方式相比上面方式多创建一个触发器,但是插入数据时候不需要sequence.nextval

效果展示如下:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

上面sql截图不太方便,下面是sql源码:


		 create table stud(
						 id number,
						 name varchar2(64),
						 descr varchar2(256),
						 primary key(id) 
					);
  
    create sequence stu_sequence  increment  by 1  ----每次递增1
                                  start with 1  ----从1开始
                                  nomaxvalue   -----没有最大值
                                  minvalue 1    ----最小值1
                                  nocycle ;   ----不循环

insert into stud VALUES(stu_sequence.nextval,'陈深','武警特工'); ----stu_sequence.nextval实现自增效果
select * from stud;  
                                                     

----------------------------------------------------------------------
 create table stud1(
         id number,
         name varchar2(64),
         descr varchar2(256),
         primary key(id) 
      );

create sequence stu_sequence1  increment  by 1  ----每次递增1
                                  start with 1  ----从1开始
                                  nomaxvalue   -----没有最大值
                                  minvalue 1    ----最小值1
                                  nocycle ;   ----不循环

create or replace trigger t_stud_trigger  ----触发器名称,随意起
              before insert on stud1  ---创建的表名
              for each row
              when(new.id is null)   ----id主键
              begin
              select  stu_sequence1.nextval into:NEW.ID from dual; ---stu_sequence(序列名字)   NEW.ID(ID主键)
              end ;

insert into stud1(name,descr) values('娜可露露','保护我方打野');
insert into stud1(name,descr) values('不知火舞','保护我方输出');
select * from stud1;

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!