我正在插入SQL Server CE表,其中主键是自动生成的,在插入完成后如何获取主键?
答案 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)
您可以找到主键是表格中的标识字段
SELECT IDENT_CURRENT('tablename')