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

问:oracle是主键如何自增

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

1.特殊序列

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

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

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

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

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

2. 序列+触发器

创建序列

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

创建触发器

--创建触发器
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;

其中:

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 ;

 

 

转载于:https://my.oschina.net/u/1031097/blog/3079573

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值