在Oracle,如果我創建具有ID字段的表和創建該字段由1自動遞增,並在1甲骨文序列再加上手動插入
IE啓動序列對象:ID:1, 2,3,4,5,6,等...
然後爲表的第一個記錄,我手動執行插入,IE:
insert into table(ID, etc...) values (1, etc...)
將序列對象自動跳到下一個可用的ID(2)如果序列對象用於下一個插入?
在Oracle,如果我創建具有ID字段的表和創建該字段由1自動遞增,並在1甲骨文序列再加上手動插入
IE啓動序列對象:ID:1, 2,3,4,5,6,等...
然後爲表的第一個記錄,我手動執行插入,IE:
insert into table(ID, etc...) values (1, etc...)
將序列對象自動跳到下一個可用的ID(2)如果序列對象用於下一個插入?
遷移數據時通常會發現此要求。您可以遷移沒有序列生成文檔編號的數據。遷移後,您使用序列來生成文檔/行號。爲了避免衝突,請使用序號的數字範圍,即與您的遷移號碼範圍不一致。
您可以創建一個觸發器來自動增加序列值。
CREATE OR REPLACE TRIGGER <tgr_name>
BEFORE INSERT ON <table>
FOR EACH ROW
BEGIN
SELECT seq_name.NEXTVAL
INTO :new.id
FROM dual;
END;
/
簡單的答案是否定的。無論如何,序列並不與表格綁定。它們是兩個獨立的對象,旨在結合使用。如果您需要這種故障切換,您的應用程序需要處理主鍵違規並請求新的值。否則,只要始終使用序列。 –
使用觸發器強制使用序列,並忽略插入中提供的值。 – DCookie
謝謝你們。這很有幫助。 – FinalForm