2012-07-11 83 views

回答

7

假設您的主鍵是標識字段,您可以在插入新行後使用查詢SELECT @@IDENTITY

+3

標識字段而且不要關閉執行INSERT和上面的SELECT之間的連接。 – ErikEJ 2012-07-22 11:05:58

+0

@keith請問我該如何把這個@@身份值在本地可用?在此先感謝 – 2014-02-03 06:48:14

-1

你必須小心這樣做。你需要做的是在一個事務中設置你的選擇:

IDbCommand.CommandText += "; select scope_identity()"; 
object rtn = cmd.ExecuteScalar(); 
return (long)(decimal)rtn; 

在事務內的單一選擇是關鍵,因爲調用select SCOPE_IDENTITY()是不是你插入的主鍵,這是最近一次插入。所以,你可以結束插入後發生的另一個插入的主鍵,但在你最近的PK插入請求之前。

注意:scope_identity()可能(可能重複)可能會綁定到IDbCommand,但在過去它不是,並且遵循上述內容是安全的。

+3

將無法​​使用SQL Server Compact – ErikEJ 2012-07-22 11:04:57

+0

@ErikEJ - 你會遇到什麼問題?我已經成功地使用了CE。 – 2012-07-24 16:46:25

+1

SQL Server Compact中不存在同一語句或socpe_identity()中的多個命令 - 是否表示Express? – ErikEJ 2012-07-25 07:59:22