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; ---序列名
相關文章
- 主鍵的建立、新增、刪除操作
- 通用mapper用oracle序列作為主鍵APPOracle
- oracle 序列的建立與使用Oracle
- Oracle 建立序列語句Oracle
- oracle 序列值導致的主鍵衝突問題Oracle
- PostgreSQL如何設定主鍵序列?SQL
- ORACLE批量刪除無主鍵重複資料Oracle
- Oracle 增加 修改 刪除 列Oracle
- postgresql重置序列和自增主鍵SQL
- [MYSQL][1]建立,修改,刪除表MySql
- mysql刪除主鍵索引,刪除索引語法MySql索引
- MySQL新增列、刪除列,建立主鍵等常用操作總結MySql
- oracle db link的檢視建立與刪除Oracle
- mysql-刪除和新增主鍵MySql
- 0705_oracle 序列Oracle
- Oracle OCP(23):序列Oracle
- IoTDB SQL語法 建立、新增、修改、刪除 windowsSQLWindows
- SAP 序列號裡'主批次'與'庫存批次'不同,如何修改?
- oracle資料庫建立、刪除索引等操作Oracle資料庫索引
- Oracle 12c 建立與刪除CDB、PDBsOracle
- 在Linux中,如何建立、刪除和修改檔案?Linux
- Sqlserver中所有約束的型別,建立、修改與刪除SQLServer型別
- Oracle 增加修改刪除欄位與新增註釋Oracle
- 修改刪除表
- Oracle RAC序列效能測試Oracle
- 淺談Oracle 主外來鍵刪除語法格式Oracle
- ORACLE 在缺少主鍵ID的情況下刪除重複資料,只保留一行Oracle
- 簡單介紹oracle重置序列的方法Oracle
- mysql使用者建立、修改、刪除及授權操作的總結MySql
- [Oracle]Oracle資料庫資料被修改或者刪除恢復資料Oracle資料庫
- Mysql索引的建立與刪除MySql索引
- openGauss 建立-刪除MOT
- oracle刪除日誌Oracle
- oracle adg主庫通過rman無法刪除歸檔Oracle
- 解決Oracle序列跳號問題Oracle
- Oracle表 列欄位的增加、刪除、修改以及重新命名操作sqlOracleSQL
- laravel 修改軟刪為:0(正常)、1(刪除) 的形式Laravel
- Oracle快速找回被刪除的表Oracle