oracle不能实现字段数值的自增长。可以通过序列和触发器来实现一行数据在insert前实现某字段的自增。
首先随便建立一个表,menuId是需要自增的字段
create table menu( menuId number(10) not null primary key,
name varchar2(40) not null,
id_parent number(10) not null,
url varchar2(300) null);
然后建立一个序列,最小值是minvalue,从1开始,步进为1递增,无循环,无缓存。
关于create sequence的详细用法。
create sequence menu_autoinc_seq
minvalue 1
start with 1
increment by 1
nocycle
然后建立一个触发器,在插入tun_menu表之前触发,选取序列的nextval作为新值。
关于create trigger的详细用法。
create or replace trigger menu_autoinc_tg
before insert on menu for each row
begin
select menu_autoinc_seq.nextval into :new.id from dual;
end menu_autoinc_tg;
若删除了一个表的所有数据,想重新插入的时候,让它的主键即序列号从1或其它数字开始,可以这样设置:
在插入数据之前,展开Sequences,右击你要修改的序列,在next number处写上你想写的数字,点apply,refresh即可。
插入数据,你会看到,序列号会从你指定的数字开始。