主鍵表 - T表 '100W'數(shù)據(jù)同步到T1表(同步:TRUNCATE/DELETE或IMPDP...等方式[手動(dòng)改數(shù)據(jù)])

創(chuàng)新互聯(lián)成立于2013年,公司以網(wǎng)站建設(shè)、做網(wǎng)站、系統(tǒng)開(kāi)發(fā)、網(wǎng)絡(luò)推廣、文化傳媒、企業(yè)宣傳、平面廣告設(shè)計(jì)等為主要業(yè)務(wù),適用行業(yè)近百種。服務(wù)企業(yè)客戶上千,涉及國(guó)內(nèi)多個(gè)省份客戶。擁有多年網(wǎng)站建設(shè)開(kāi)發(fā)經(jīng)驗(yàn)。為企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、創(chuàng)意設(shè)計(jì)、宣傳推廣等服務(wù)。 通過(guò)專業(yè)的設(shè)計(jì)、獨(dú)特的風(fēng)格,為不同客戶提供各種風(fēng)格的特色服務(wù)。
例如: T表對(duì)應(yīng)SEQ_T.NEXTVAL= 100W;
T1表對(duì)應(yīng)SEQ_T.NEXTVAL= 10W;
TRUNCATE TABLE T1;
INSERT TABLE T1 SELECT * FROM T;
數(shù)據(jù)同步但T1表對(duì)應(yīng)SEQ_T.NEXTVAL= 10W序列不變;
此時(shí)T1調(diào)用序列INSERT到T1表時(shí)就會(huì)報(bào)錯(cuò) ( ORA-00001 : 違反唯一約束條件 (LOTTERY.PK_T1))
(若批量同步很多表就可能會(huì)引起很多表序列需要更新成主鍵最大值+ 1才能保證不報(bào)錯(cuò)
(可以用把源庫(kù)的SEQUENCE同步過(guò)來(lái)①或者如下存儲(chǔ)解決② ))
如何使用Oracle序列:
Oracle序列(sequence)是一種數(shù)據(jù)庫(kù)項(xiàng),能夠生成一個(gè)整數(shù)序列。通常用于填充數(shù)字類型的主鍵列。
1、創(chuàng)建序列:
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:序列開(kāi)始整數(shù)
increment_num:每次增加的整數(shù)增量
maximum:序列最大整數(shù)
minimum:序列最小整數(shù)
CYCLE:循環(huán)生成
NOCYCLE:不循環(huán)生成,默認(rèn)值
cache_num:保存在內(nèi)存中的整數(shù)的個(gè)數(shù)
NOCACHE:不緩存任何整數(shù)
例如:
CREATE SEQUENCE seq_test;(默認(rèn)值)
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語(yǔ)句來(lái)修改序列。可以修改的內(nèi)容:
不能修改序列的初值
序列的最小值不能大于當(dāng)前值
序列的最大值不能小于當(dāng)前值
例如:ALTER SEQUENCE seq_test INCREMENT BY 3;
4、刪除序列:
DROP SEQUENCE seq_test;
序列是一數(shù)據(jù)庫(kù)對(duì)象,利用它可生成唯一的整數(shù)。一般使用序列自動(dòng)地生成主碼值。一個(gè)序列的值是由特殊的Oracle程序自動(dòng)生成,因此序列避免了在應(yīng)用層實(shí)現(xiàn)序列而引起的性能瓶頸。
Oracle序列允許同時(shí)生成多個(gè)序列號(hào),而每一個(gè)序列號(hào)是唯一的。當(dāng)一個(gè)序列號(hào)生成時(shí),序列是遞增,獨(dú)立于事務(wù)的提交或回滾。允許設(shè)計(jì)缺省序列,不需指定任何子句。該序列為上升序列,由1開(kāi)始,增量為1,沒(méi)有上限。
具體步驟
1.建立序列命令
CREATE SEQUENCE [user.]sequence_name
[increment by n]
[start with n]
[maxvalue n | nomaxvalue]
[minvalue n | nominvalue]
INCREMENT BY: 指定序列號(hào)之間的間隔,該值可為正的或負(fù)的整數(shù),但不可為0。序列為升序。忽略該子句時(shí),缺省值為1。
START WITH:指定生成的第一個(gè)序列號(hào)。在升序時(shí),序列可從比最小值大的值開(kāi)始,缺省值為序列的最小值。對(duì)于降序,序列可由比最大值小的值開(kāi)始,缺省值為序列的最大值。
MAXVALUE:指定序列可生成的最大值。
NOMAXVALUE:為升序指定最大值為1027,為降序指定最大值為-1。
MINVALUE:指定序列的最小值。
NOMINVALUE:為升序指定最小值為1。為降序指定最小值為-1026。
2.更改序列命令
ALTERSEQUENCE [user.]sequence_name
[INCREMENT BY n]
[MAXVALUE n| NOMAXVALUE ]
[MINVALUE n | NOMINVALUE];
修改序列可以:
修改未來(lái)序列值的增量。
設(shè)置或撤消最小值或最大值。
改變緩沖序列的數(shù)目。
指定序列號(hào)是否是有序。
刪除序列命令
DROP SEQUENCE [user.]sequence_name;
從數(shù)據(jù)庫(kù)中刪除一序列。
創(chuàng)建一個(gè)序列號(hào)的語(yǔ)句:
中國(guó)網(wǎng)管聯(lián)盟bitsCN.com
CREATE SEQUENCE EXAM_NO_SEQ
START WITH 1484
MAXVALUE 9999999999
MINVALUE 1
CACHE 20
NOORDER;
PB中取序列號(hào)的用法:
string ?v_exam_no
SELECT exam_no_seq.nextval INTO :v_exam_no FROM dual
using ghis_database;
if ghis_database.SQLCODE0 then
messagebox("","取檢查序號(hào)出錯(cuò)")
return
end if
網(wǎng)站欄目:oracle的序列怎么改,oracle怎么改字段名
瀏覽路徑:http://chinadenli.net/article33/dsihdps.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)