【问题标题】:In SqlTransaction.BeginTransaction() if returing Ident_current before commit(), what value should return在 SqlTransaction.BeginTransaction() 中如果在 commit() 之前返回 Ident_current,应该返回什么值
【发布时间】:2017-06-05 19:44:36
【问题描述】:

我正在使用SqlTransaction.BeginTranactionCommit 方法。我在BeginTransaction 之后和Commit 之前调用存储过程。

并且存储过程返回Ident_Current,它应该返回该表中最后插入的值还是0?

谢谢, 布佩什

【问题讨论】:

    标签: c# sql-server stored-procedures ado.net sqltransaction


    【解决方案1】:

    警告:永远不要(除非您有非常具体和有针对性的理由)使用 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

    返回插入到同一范围内的标识列中的最后一个标识值。范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两条语句在同一个存储过程、函数或批处理中,则它们属于同一范围。

    【讨论】:

    • 谢谢,我会处理这个问题,但即使我将其更改为 Scope_Identity 我的问题是关于返回值,请帮助我。
    • 我做了:“Scope_Identity() 将包含您想要的值。”
    • 如果我的回答与您不符,那更多的是您的问题。 “并且存储过程返回 Ident_Current,它应该返回该表中最后插入的值还是 0?”最好将您的程序文本提供给我们,以便我们更准确地回答您的情况。事实上,鉴于您提供的信息有限,这几乎是我能给出的最佳答案。
    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多