[英]Best practices: .NET: How to return PK against an oracle database?
使用SQLServer,似乎普遍接受的是,在插入的末尾添加SELECT SCOPE_IDENTITY()是返回新插入記錄的PK的最佳方法,假設您正在為pk使用自動增量字段。
但是,我似乎無法找到Oracle的等價物。
最佳實踐似乎是使用序列來生成PK,但是如何實現甚至可以有不同的選項。 您是否將其留給開發人員插入sequence.nexval,或使用觸發器?
在任何一種情況下,獲取新ID似乎是一個常見問題。
我遇到的建議和解決方案包括:
對於這種情況,“最佳實踐”解決方案應該是什么?
您可以使用RETURNING子句在Oracle存儲過程中執行此操作。
例如:
TABLEA具有NAME和EMP_ID。 插入記錄時,內部填充EMP_ID。
INSERT INTO TABLEA(NAME)VALUES('BOB')將EMP_ID返回到o_EMP_ID;
這是假設該行在存儲過程中,輸出參數為o_EMP_ID。
希望有幫助......如果沒有,這里有一個更詳細的例子:
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/returninginto_clause.htm
RETURNING子句僅用於此類用法,因此我將其稱為最佳實踐。
另一種方法是在插入后選擇seq.CURRVAL。 返回此會話從序列中獲取的最后一個值。
存儲過程和返回子句具有單個數據庫調用的獨特優點,任何其他解決方案都是劣等的。 無論您是通過存儲過程來執行還是使用返回子句,本身就是一整套蠕蟲。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.