【发布时间】:2012-07-11 01:30:56
【问题描述】:
我正在向自动生成主键的 SQL Server CE 表中插入,插入完成后我将如何获取主键?
【问题讨论】:
标签: c# sql compact-framework sql-server-ce
我正在向自动生成主键的 SQL Server CE 表中插入,插入完成后我将如何获取主键?
【问题讨论】:
标签: c# sql compact-framework sql-server-ce
假设您的主键是一个标识字段,您可以在插入新行后使用查询SELECT @@IDENTITY。
【讨论】:
你必须小心这样做。您需要做的是在一个事务中将您的选择设置为:
IDbCommand.CommandText += "; select scope_identity()";
object rtn = cmd.ExecuteScalar();
return (long)(decimal)rtn;
事务中的单个选择是关键,因为调用 select scope_identity() 不是插入的主键,它是最近的插入。因此,您最终可能会得到另一个插入的主键,该主键发生在您的插入之后,但在您请求最近的 PK 插入之前。
注意:scope_identity() 可能(重复可能)现在与 IDbCommand 相关联,但过去并非如此,遵循上述内容是安全的。
【讨论】:
你可以发现你的主键是表中的一个标识字段
SELECT IDENT_CURRENT(‘表名’)
【讨论】: