我正在向自动生成主键的 SQL Server CE 表中插入,插入完成后如何获取主键?
问问题
5097 次
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('表名')
于 2012-07-11T05:17:23.080 回答