Oracle创建自增主键有两个方式:一种序列+触发器,另一种只有序列
一、建表
CREATE TABLE "SCOTT"."student_test" (
"SNO" NUMBER VISIBLE NOT NULL ,
"SNAME" VARCHAR2(255 BYTE) VISIBLE ,
"SEX" VARCHAR2(255 BYTE) VISIBLE ,
"BORN" VARCHAR2(255 BYTE) VISIBLE ,
"GRADE" NUMBER(4,1) VISIBLE
)
主键约束:ALTER TABLE "SCOTT"."student_test" ADD CONSTRAINT "SYS_C007831" PRIMARY KEY ("SNO");
二、如果触发器能用就采用:序列+触发器
创建sequence:
create sequence sno_sequence
increment by 1 --增长速度为1
start with 1 --开始值为1
nomaxvalue --没有最大值
nocycle --不循环
nocache; --不缓存
创建触发器:
create trigger sno_autoincrement before
insert on "student_test" for each row
when (new.sno is null)
begin
select sno_sequence.nextval into:new.sno from dual;
end;
插入数据时sql语句:(不需要主键字段(sno))
INSERT INTO "student_test" (SNAME,sex,born,grade)values('lisi','m','199802',99)
三、只采用序列方法,没有用触发器(因为触发器无效)
创建序列语句同上
插入数据时sql语句:(需要主键字段(sno))
INSERT INTO "student_test" (sno,sname,sex,born,grade)values(sno_sequence.nextval,'lisi','m','199802',99)