問: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 ;