2

我正在向自动生成主键的 SQL Server CE 表中插入,插入完成后如何获取主键?

4

3 回答 3

7

假设您的主键是一个身份字段,您可以SELECT @@IDENTITY在插入新行后使用该查询。

于 2012-07-11T01:39:08.517 回答
-1

你必须小心这样做。您需要做的是在交易中将您的选择设置为:

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

事务中的单个选择是关键,因为调用 select scope_identity() 不是插入的主键,它是最近的插入。因此,您最终可能会得到另一个插入的主键,该主键发生在您的插入之后,但在您请求最近的 PK 插入之前。

注意:scope_identity() 可能(重复可能)现在与 IDbCommand 相关联,但过去并非如此,并且遵循上述内容是安全的。

于 2012-07-11T05:12:02.817 回答
-1

你可以发现你的主键是表中的一个身份字段

SELECT IDENT_CURRENT('表名')

http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

于 2012-07-11T05:17:23.080 回答