oracle数据库创建表且主键自增

时间:2022-12-09 13:53:02

Oracle数据库中,设置ID自增并不像MySQL中那么简单,Oracle中需要设置一个序列。

现在给出方式,具体如下:

第一步:建立一个表

create table ContestDB  
(
TID NUMBER(
10) PRIMARY KEY,
TEAMNUM varchar(
50) not null,
MARKNUM varchar(
50)
);

 

第二步:设置ID自增

第一种方式:不使用触发器

1 CREATE SEQUENCE SEQ_TID;  
2 INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,'B20007009','B001 ');
3 INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,'B20007010','B003 ');

 

第二种方式:使用Trigger 触发器

 

 1 --自定义一个序列  
2 create sequence ContestDB_sequence
3 increment by 1 --每次增加几个,我这里是每次增加1
4 start with 1 --从1开始计数
5 nomaxvalue --不设置最大值
6 nocycle --一直累加,不循环
7 nocache --不建缓冲区
8 --创建一个触发器
9 CREATE TRIGGER ContestDB_trigger
10 BEFORE INSERT ON ContestDB
11 FOR EACH ROW
12 WHEN (new.TID is null) --只有在tid为空时,启动该触发器生成tid号
13 begin
14 select ContestDB_sequence.nextval into :new.TID from sys.dual;
15 end;
16
17 insert into ContestDB(TEAMNUM,MARKNUM) values('A20007013','A002');
18
19 insert into ContestDB(TEAMNUM,MARKNUM) values('A20007014','A003');