對於SQLServer,似乎普遍認爲將SELECT SCOPE_IDENTITY()添加到插入的末尾是返回新插入記錄的PK的最佳方法,假設您使用自動增量字段派克。最佳實踐:.NET:如何針對Oracle數據庫返回PK?
但是,我似乎無法找到Oracle的等價物。
最佳實踐似乎是使用一個序列來生成PK,但即使如此也有不同的選擇。您是否將其留給開發人員以插入sequence.nexval或使用觸發器?
在任何一種情況下,獲取新ID似乎都是一個常見問題。
建議和解決方案我已經跨越運行包括:
- 創建一個存儲過程返回的PK
- 運行從seq.nextval一個選擇ID,然後傳遞一個到插入
- 選擇MAX(ID)插入後(注:不要做)
- 回來的條款添加到insert
我應該ŧ他的「最佳實踐」解決方案適用於這種情況嗎?
但是,如果併發呼叫增加了序列,請注意,對嗎? – Liam 2008-10-01 16:51:47
不,CURRVAL是從THIS會話序列中獲得的最後一個值。 – 2008-10-01 16:53:55