2016-11-28 40 views
0

在Oracle,如果我創建具有ID字段的表和創建該字段由1自動遞增,並在1甲骨文序列再加上手動插入

IE啓動序列對象:ID:1, 2,3,4,5,6,等...

然後爲表的第一個記錄,我手動執行插入,IE:

insert into table(ID, etc...) values (1, etc...) 

將序列對象自動跳到下一個可用的ID(2)如果序列對象用於下一個插入?

+1

簡單的答案是否定的。無論如何,序列並不與表格綁定。它們是兩個獨立的對象,旨在結合使用。如果您需要這種故障切換,您的應用程序需要處理主鍵違規並請求新的值。否則,只要始終使用序列。 –

+0

使用觸發器強制使用序列,並忽略插入中提供的值。 – DCookie

+0

謝謝你們。這很有幫助。 – FinalForm

回答

0

遷移數據時通常會發現此要求。您可以遷移沒有序列生成文檔編號的數據。遷移後,您使用序列來生成文檔/行號。爲了避免衝突,請使用序號的數字範圍,即與您的遷移號碼範圍不一致。

0

您可以創建一個觸發器來自動增加序列值。

CREATE OR REPLACE TRIGGER <tgr_name> 
BEFORE INSERT ON <table> 
FOR EACH ROW 

BEGIN 
    SELECT seq_name.NEXTVAL 
    INTO :new.id 
    FROM dual; 
END; 
/