致命三连问之一:oracle是主键如何自增

问:oracle是主键如何自增mysql

答:Oracle不一样于其余数据库(如mysql),天生带有自增。须要经过 序列+触发器 或者 特殊序列的方式的形式实现序号的自增。sql

1.特殊序列数据库

建立序列:T_SYS_USER_SEQ 为序列的名,序列从1开始mybatis

CREATE SEQUENCE T_SYS_USER_SEQ
MINVALUE 1 
NOMAXVALUE 
INCREMENT BY 1 
START WITH 1 NOCACHE

插入SQL:插入语句须要在id字段的位置使用 序列名.NEXTVAL的方式oracle

insert into sys_users(user_id,user_name,user_pwd,sex) 
       values(T_SYS_USER_SEQ.NEXTVAL,'shaoduo','shao111','男') ;
       commit ;

那么问题来了:若是使用mybatis之类的,又必需要插入ID,但是Mapper什么的都写好了,若是你要手动改,估计就是灾难了。幸亏还有第二种方法app

2. 序列+触发器code

建立序列it

---自增序列
CREATE SEQUENCE T_SYS_USER_SEQ
MINVALUE 1 
NOMAXVALUE 
INCREMENT BY 1 
START WITH 1 NOCACHE ;

建立触发器class

--建立触发器
create or replace trigger T_SYS_USER_USER_ID_TRIGGER
  before insert on SYS_USERS  
  for each row
begin
  select T_SYS_USER_SEQ.nextval into :new.user_id from dual;
end T_SYS_USER_USER_ID_TRIGGER;

其中:select

T_SYS_USER_USER_ID_TRIGGER 是设置的触发器名字 
SYS_USERS是表名 
T_SYS_USER_SEQ 是序列名 
new.user_id 是 new.主键

insert语句:无需插入id

insert into sys_users(user_name,user_pwd,sex) 
       values('shaoduo','shao111','男') ;
       commit ;
相关文章
相关标签/搜索