致命三連問之一: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 ;
相關文章
相關標籤/搜索