【发布时间】:2017-06-05 19:44:36
【问题描述】:
我正在使用SqlTransaction.BeginTranaction 和Commit 方法。我在BeginTransaction 之后和Commit 之前调用存储过程。
并且存储过程返回Ident_Current,它应该返回该表中最后插入的值还是0?
谢谢, 布佩什
【问题讨论】:
标签: c# sql-server stored-procedures ado.net sqltransaction
我正在使用SqlTransaction.BeginTranaction 和Commit 方法。我在BeginTransaction 之后和Commit 之前调用存储过程。
并且存储过程返回Ident_Current,它应该返回该表中最后插入的值还是0?
谢谢, 布佩什
【问题讨论】:
标签: c# sql-server stored-procedures ado.net sqltransaction
警告:永远不要(除非您有非常具体和有针对性的理由)使用 Ident_Current() - 使用 Scope_Identity()。 Ident_Current() 将返回 ANY Session 插入的最后一个 Identity 值,而不仅仅是你的。
Scope_Identity() 将包含您想要的值。
https://docs.microsoft.com/en-us/sql/t-sql/functions/scope-identity-transact-sql
返回插入到同一范围内的标识列中的最后一个标识值。范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两条语句在同一个存储过程、函数或批处理中,则它们属于同一范围。
【讨论】: