2014-10-30 129 views

回答

0

假設碼/描述表:

insert into TABLE (X_ID, X_DESC) 
(select max(b.X_ID) + 1, 'TEST DESC' from TABLE b); 

但是,什麼是錯的順序?這就是它的目的。

+0

但這個查詢將需要表中的虛擬最大值,我們需要開始... 但我想從第一個記錄開始(表中沒有虛擬記錄)... – 2014-10-30 13:47:19

+1

@Shobhit Varshney nvl (max(b.X_ID),0)+ 1但是平行插入呢? – Multisync 2014-10-30 14:06:03

+0

問題在於尋求麻煩,而這個SQL將提供它。用戶1插入一行,然後用戶2插入一行,然後用戶1提交,然後用戶2提交。現在您有一個重複的ID,或者由於唯一的密鑰違規而失敗的事務。序列正好存在以避免這種情況。 – Bacs 2014-10-30 14:45:45