oracle实现主键自增
前言:oracle不像mysql一样,支持主键自增。oracle需要序列(sequence)来间接实现主键自增。
创建表:(例如创建用户表)
create table t_user(
id number(10) not null, //主键id
username varchar2(40) not null, //用户名
password varchar2(40) not null, //密码
primary key(id), //标记主键是哪个
foreign key(role_id) references t_role(role_id) //设置外键role_id,关联表t_role
);
创建序列:(例如用户序列)
create sequence seq_user //序列名为seq_user
start with 1 //以该值开始自增或自减
increment by 1 //每次自增1
maxvalue //最大值;设置NOMAXVALUE表示无最大值
minvalue //最小值;设置NOMINVALUE表示无最小值
CYCLE or NOCYCLE //设置到最大值后是否循环;
cache 20 //指定可以缓存 20 个值在内存里;如果设置不缓存序列,则写NOCACHE
order or noorder //设置是否按照请求的顺序产生序列
创建触发器:(例如用户触发器)
create trigger trigger_user //出发器名trigger_user
before insert on t_user for each row when (new.id is null) --只有在id为空时,启动该触发器生成id号
begin
select seq_user.nextval into:new.id from dual;
end;