Oracle数据库中,设置ID自增并不像MySQL中那么简单,Oracle中需要设置一个序列。
现在给出方式,具体如下:
第一步:建立一个表
create table ContestDB
(
TID NUMBER(10) PRIMARY KEY,
TEAMNUM varchar(50) not null,
MARKNUM varchar(50)
);
第二步:设置ID自增
第一种方式:不使用触发器
CREATE SEQUENCE SEQ_TID;
INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,'B20007009','B001 ');
INSERT INTO ContestDB VALUES(SEQ_TID.NEXTVAL,'B20007010','B003 ');
第二种方式:使用Trigger 触发器
--自定义一个序列
create sequence ContestDB_sequence
increment by 1 --每次增加几个,我这里是每次增加1
start with 1 --从1开始计数
nomaxvalue --不设置最大值
nocycle --一直累加,不循环
nocache --不建缓冲区
--创建一个触发器
CREATE TRIGGER ContestDB_trigger
BEFORE INSERT ON ContestDB
FOR EACH ROW
WHEN (new.TID is null) --只有在tid为空时,启动该触发器生成tid号
begin
select ContestDB_sequence.nextval into :new.TID from sys.dual;
end;
insert into ContestDB(TEAMNUM,MARKNUM) values('A20007013','A002');
insert into ContestDB(TEAMNUM,MARKNUM) values('A20007014','A003');
分享知识,分享快乐!若发现错误,望指出,谢谢!