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