oracle主键
两种方法:自增主键sequence,SYS_GUID()生成唯一序列。
一、自增主键
创建一个表
create table test(
NID int PRIMARY KEY,
test1 varchar2(20),
test2 varchar2(20)
)
再建一个序列SEQ_TEST
create sequence SEQ_TEST
minvalue 1 --最小值 //可选
nomaxvalue --不设置最大值 //可选
start with 1 --从1开始计数
increment by 1 --每次加1个
nocycle --一直累加,不循环 //可选
nocache; --不建缓冲区 //可选
触发器##################
最好再建一个触发器来执行它!
//这样就不用主动调SELECT BJPRODUCT_SEQUENCE.NEXTVAL AS SEQNO FROM DUAL
//或values(BJPRODUCT_SEQUENCE.NEXTVAL,'wnj123')//可以直接用BJPRODUCT_SEQUENCE.NEXTVAL
CREATE OR REPLACE TRIGGER tg_test
BEFORE INSERT ON test FOR EACH ROW WHEN (new.nid is null)
begin
select seq_test.nextval into:new.nid from dual;
end;
下面是测试
insert into test(nid,test1) values(6,'aaa')
insert into test(test1) values('bbb')
二、唯一序列
SYS_GUID() 生成32位的唯一编码
三、区别
sequence不适合将它用作并行或者远程环境里的PK
SYS_GUID生成的值的另一个显著的不足之处是,管理这些值会比较困难