日期:2014-05-16  浏览次数:20564 次

Oracle中主键自增

下面用一个例子来说明自增主键的创建:

1、建用户数据表
????? drop table dectuser;
????? create table dectuser(
?????????? userid number primary key,? /*主键,自动增加*/
?????????? name varchar2(20),
????????? ?sex varchar2(2)
?????????? );

2、创建自动增长序列
????? drop sequence dectuser_tb_seq;
????? create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999 --/*或者nomaxvalue*/
?????????????? increment by 1
???????? nocache --不建缓冲区

nocycle ?-- 一直累加不重复

?????? start with 1;?? /*步长为1*/


3、创建触发器
????? create or replace trigger dectuser_tb_tri
????????? before insert on dectuser???? /*触发条件:当向表dectuser执行插入操作时触发此触发器*/
??????????for each row???????????????????????/*对每一行都检测是否触发*/
??????????begin????????????????????????????????? /*触发器开始*/
???????????????? select dectuser_tb_seq.nextval into :new.userid from dual;?? /*触发器主题内容,即触发后执行的动作,在此是取得序列dectuser_tb_seq的下一个值插入到表dectuser中的userid字段中*/
????????? end;
????
????????? / ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*退出sqlplus行编辑*/
4、提交
??????commit;
?
??????现在就完成了自增主键的设定,搞定!可以检测一下。
????? insert into dectuser(name,sex) values ('wang','女');

????? 提示“已创建一行”,表示成功。呵呵:D