Java程序连接Oracle数据库时怎么设置主键自增
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java程序连接Oracle数据库时怎么设置主键自增相关的知识,希望对你有一定的参考价值。
Java程序连接Oracle数据库时怎么设置主键自增
在oracle中主键是不能自增的,不过可以创建一个序列-- Create sequence
create sequence SEQ_TEXT
minvalue 1
maxvalue 9999
start with 60
increment by 1
cache 20;
在插入数据的时候
INSERT INTO STUDENT(ID,NAME) VALUES(SEQ_TEXT.NEXTVAL,\'张三\');
这样就可以了 参考技术A 对于oracle数据库只有序列可以完成这项任务…
创建序列然后手动调用 序列名.nextVal()
或者使用hibernate JPA等对象关系映射工具它们支持主键自增但是对于oracle数据库底层仍然是使用序列…本回答被提问者采纳 参考技术B 设置主键自增是通过Oracle的序列完成的。你可以查一下Oracle序列的使用
oracle数据库创建表且主键自增
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‘);
以上是关于Java程序连接Oracle数据库时怎么设置主键自增的主要内容,如果未能解决你的问题,请参考以下文章