oracle主键序列的创建,删除,修改序列起始值

事件背景:

       为客户部署oracle数据库后需要将老库中的数据导过来,老库的单表数据2W+由于在为新库的表创建主键自增序列时设置的起始值是3000,导致后续客户使用时,在插入数据时抛出数据库java.sql.SQLException:ORA-00001:违反唯一约束条件异常

解决方案:

     修改序列起始值:

             方法1: 直接删除当前的序列,重新创建。为避免用户正常使用,尽量不要使用这种方式。

             方法2:通过Increment By来修改序列起始值,具体步骤如下                  

                            1、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 5000;
                            2、SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;
                            3、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 1;

       SEQ_USER_COMBO:本库中的序列名

       5000:表示在原始初始值的基础上增加5000

       INCREMENT BY 1:表示自增1

             如果不嫌累的话还有一种方法:使用方法2中的第二步进行循环增加

                         SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;

                         如果只使用这个语句每执行一次起始值增加1

                          1、ALTER SEQUENCE SEQ_USER_COMBO INCREMENT BY 5000;
                          2、SELECT SEQ_USER_COMBO.NEXTVAL FROM DUAL;

                         如果在循环执行2之前先执行一次1,那么每次循环增加的值就是5000

创建序列:

           create sequence SEQ_USER_COMBO
           minvalue 0                   --序列最小值
           maxvalue 999999999999999999            --序列最大值
           start with 3000                    ---序列起始值
           increment by 1                    ---序列自增值
           cache 20;                             ---定义存放序列的内存块的大小,默认为20

删除序列:

         drop sequence SEQ_USER_COMBO;                    ---序列名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值