如何使用Oracle序列:
目前創新互聯建站已為超過千家的企業提供了網站建設、域名、虛擬主機、網站托管運營、企業網站設計、鐘祥網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
Oracle序列(sequence)是一種數據庫項,能夠生成一個整數序列。通常用于填充數字類型的主鍵列。
1、創建序列:
CREATE SEQUENCE sequence_name
[START WITH start_num]
[INCREMENT BY increment_num]
[{MAXVALUE maximum_num|NOMAXVALUE}]
[{MINVALUE minimum_num|NOMINVALUE}]
[{CYCLE|NOCYCLE}]
[{CACHE cache_num|NOCACHE}]
[{ORDER|NOORDER}]
其中:
start_num:序列開始整數
increment_num:每次增加的整數增量
maximum:序列最大整數
minimum:序列最小整數
CYCLE:循環生成
NOCYCLE:不循環生成,默認值
cache_num:保存在內存中的整數的個數
NOCACHE:不緩存任何整數
例如:
CREATE SEQUENCE seq_test;(默認值)
CREATE SEQUENCE seq_test START WITH 1 INCREMENT BY 2;
2、使用序列:
SELECT seq_test.nextval FROM dual;
insert into order_status2 (id) values (seq_test.nextval);
3、修改序列:
ALTER SEQUENCE語句來修改序列。可以修改的內容:
不能修改序列的初值
序列的最小值不能大于當前值
序列的最大值不能小于當前值
例如:ALTER SEQUENCE seq_test INCREMENT BY 3;
4、刪除序列:
DROP SEQUENCE seq_test;
序列本身沒辦法直接歸零,只能是刪掉然后重建。刪除序列要用到drop語句和建立的create語句都是ddl語句,在存儲過程中是沒辦法應用的。個人建議寫成一個sql腳本,然后在操作系統層面設定為每隔一年運行一次。
不可以直接修改的,但是可以間接修改。
alter sequence se_1 increment by -2;
修改步進的值,然后查詢一次,
select seq.nextval from dual;
然后再把步進修改回去,
alter sequence se_1 increment by 1;
相當于修改了序列的當前值。
1.
先清除表中的數據(如:delete
from
user_info)
2.
刪除序列(如:drop
sequence
sq_user)
3.
重新添加序列(如:create
sequence
sq_user)
4.
添加數據進行驗證一下就好了
主鍵表 - T表 '100W'數據同步到T1表(同步:TRUNCATE/DELETE或IMPDP...等方式[手動改數據])
例如: T表對應SEQ_T.NEXTVAL= 100W;
T1表對應SEQ_T.NEXTVAL= 10W;
TRUNCATE TABLE T1;
INSERT TABLE T1 SELECT * FROM T;
數據同步但T1表對應SEQ_T.NEXTVAL= 10W序列不變;
此時T1調用序列INSERT到T1表時就會報錯 ( ORA-00001 : 違反唯一約束條件 (LOTTERY.PK_T1))
(若批量同步很多表就可能會引起很多表序列需要更新成主鍵最大值+ 1才能保證不報錯
(可以用把源庫的SEQUENCE同步過來①或者如下存儲解決② ))
可以使用update select 語法進行更新
喜歡研究的可以自行學習下,以便積累
不想浪費時間可以看下面:
UPDATE A SET ID = (SELECT ROWNUM FROM A ORDER BY 時間 DESC)
參考語法:
UPDATE A SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
新聞名稱:oracle如何更改序列,oracle怎么修改序列
鏈接分享:http://m.newbst.com/article30/dssigpo.html
成都網站建設公司_創新互聯,為您提供全網營銷推廣、響應式網站、App開發、云服務器、企業建站、電子商務
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯