oracle主鍵序列的建立,刪除,修改序列起始值

AstoIfy發表於2018-07-25

事件背景:

       為客戶部署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;                    ---序列名

相關文章