oracle表id自增或者自定义id自增,解决不按照步进连续/id数字不连续的问题,

 

由于oracle的表没有mysql自增的功能,需要对表进行一些额外的操作才能达到目的,具体操作如下

说明:过程操作所用连接工具为navicat

通过语句增加触发器

一、存在一个表名字如下,需要给UA_ID在插入数据时候生成自增id

 

创建一个sequence 命名为T_USERADDRESS_UA_ID,初始值设置为1,最大值99999999999999999999,步进为1,具体语句如下

 

create sequence T_USERADDRESS_UA_ID

minvalue 1
maxvalue 99999999999999999999
start with 1
increment by 1
cache 20;

执行结果

 

 

二,创建TRI

插入我们需要自增的表T_USER_ADDRESS,关联刚刚上面创建的sequence   T_USERADDRESS_UA_ID的下一个新值为UA_ID的默认值


CREATE OR REPLACE TRIGGER T_USERADDRESS_UA_TRI
BEFORE INSERT ON T_USER_ADDRESS
FOR EACH ROW
BEGIN
SELECT T_USERADDRESS_UA_ID.NEXTVAL INTO :NEW.UA_ID FROM DUAL;
END;

 

 

执行

 

通过navicat查看

 

触发器语句可以这里查看

 

三、验证结果

插入一条数据看看,其中ua_id设置值为1

insert into T_USER_ADDRESS (UA_ID,UR_ID,UA_NAME,UA_PHONE,UA_CERT_TYPE,UA_CERT_NO,UA_PROVINCE,UA_CITY,UA_COUTY,UA_ADDRESS,UR_CREATE_DATE) values ('1' ,'6' ,'name123' ,'15588777777' ,'1' ,'1234567890' ,'guangdong' ,'shenzhen' ,'baoan' ,'xinanyilu' ,to_date('2021-04-15 20:47:21', 'yyyy-mm-dd hh24:mi:ss') );

 

结果

 

 

注意:上图查询新插入的结果ua_id自增了1,也就是2了,这是不对的

 

因为开始创建一个sequence,后面又创建TRI,sequence执行步进后会得到一个新值,tri再获取下一个值,会出现2-4-6这样的递进自增ID

 

所以

取消结果是这样的

 

尝试插入两行连续的行,看是否出现连续的自增ID

 

96和97连续

至此,oracle自增id和自增出现不按照步进连续的问题解决

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值