我有一个 SQL Server 作为 asp.net 应用程序的后端。多个人可能会“同时……”在同一个表中插入数据。
当我从这篇文章中阅读解决方案/答案时:scope_identity vs ident_current
那么我不应该使用,Ident_current
因为我可以获得另一个用户插入的 id。
但是使用Select Scope_Identity();
返回我NULL,而Select IDENT_CURRENT('tableName')
返回我使用SQL Server Management Studio检查的正确ID。
我在SqlTransaction
. 这Select IDENT_CURRENT('tableName')
是在交易之后完成的。
我错了什么?
更新:
我的插入语句由基类动态构建在一起:
INSERT INTO TEST (NAME) VALUES (@Name)
该命令的参数集合具有值“xxx”,并且所有内容都可以很好地插入表中。
我不使用纯SqlDataReader
C# 的存储过程。
commandText = "INSERT INTO TEST (NAME) VALUES ('Test1');Select Scopy_Identity();"
我怎样才能获得运行上述语句的最后一个自动 inc id,我应该调用ExecuteNonQuery
或调用上述语句ExecuteReader
,因为它有一个INSERT
,SELECT
这令人困惑......