2012-07-11 66 views

回答

7

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

+3

标识字段而且不要关闭执行INSERT和上面的SELECT之间的连接。 – ErikEJ 2012-07-22 11:05:58

+0

@keith请问我该如何把这个@@身份值在本地可用?在此先感谢 – 2014-02-03 06:48:14

-1

你必须小心这样做。你需要做的是在一个事务中设置你的选择:

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

在事务内的单一选择是关键,因为调用select SCOPE_IDENTITY()是不是你插入的主键,这是最近一次插入。所以,你可以结束插入后发生的另一个插入的主键,但在你最近的PK插入请求之前。

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

+3

将无法​​使用SQL Server Compact – ErikEJ 2012-07-22 11:04:57

+0

@ErikEJ - 你会遇到什么问题?我已经成功地使用了CE。 – 2012-07-24 16:46:25

+1

SQL Server Compact中不存在同一语句或socpe_identity()中的多个命令 - 是否表示Express? – ErikEJ 2012-07-25 07:59:22