oracle中主键自增
转自:http://www.blogjava.net/greenteazsh/archive/2008/04/13/192576.html
下面用一个例子来说明自增主键的创建:
1、建用户数据表
drop table dectuser; create table dectuser( userid integer primary key, /*主键,自动增加*/ name varchar2(20), sex varchar2(2) );
2、创建自动增长序列
drop sequence dectuser_tb_seq; create sequence dectuser_tb_seq minvalue 1 maxvalue 99999999 increment by 1 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 要注意的是主键数据类型如果为number,则触发器创建不了,还不明白这是为什么。