获取SQL Server CE和C#中新插入的行的主键?

时间:2012-07-11 01:30:57

标签: c# sql compact-framework sql-server-ce

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

3 个答案:

答案 0 :(得分:7)

假设您的主键是标识字段,您可以在插入新行后使用查询SELECT @@IDENTITY

答案 1 :(得分:-1)

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

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

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

注意:scope_identity()可能(重复可能)现在与IDbCommand绑定,但在过去它不是,并且遵循上述是安全的。

答案 2 :(得分:-1)