【问题标题】:Will Scope_Identity work in different application sessions?Scope_Identity 会在不同的应用程序会话中工作吗?
【发布时间】:2012-09-23 14:30:28
【问题描述】:

我的 ASP.NET 应用程序正在使用 SQL Server 2008 后端。

我有一个 Web 表单,许多用户同时使用它来输入记录。当用户单击 SAVE 按钮时,存储过程将记录插入数据库。成功执行此存储过程后,我想选择此用户的最近记录 ID。也就是说,如果我要插入记录,我只想选择我输入的最后一条记录的 ID,而不是其他用户的 ID。

Scope_Identity 在这种情况下会起作用吗?

【问题讨论】:

    标签: asp.net sql-server sql-server-2008


    【解决方案1】:

    您需要从存储过程本身中调用该函数。退出后该功能将失效。

    您可能需要考虑使用OUTPUT 子句,但要避免遇到this bug in Scope_Identity 的可能性。

    【讨论】:

    • 如何使用OUTPUT子句?
    • @RPK INSERT YourTable(YourColumnList) OUTPUT INSERTED.ID VALUES (...);Plenty of other examples here
    • 关于 OPs 问题,他从 Scope_Identity 检索正确值的能力将取决于他对他的数据源使用的连接对象的实现。他需要确保他正在使用与他发出插入的相同连接对象检索 Scope_Identity,并且在插入和检索之间没有发出任何其他干扰命令。也许这已经很明显了,但我想强调的是应用程序会话和数据库会话之间没有必要的连接。
    • 啊我刚刚注意到他们在执行存储过程后说。那么答案将是“否”。他们需要从存储过程本身返回作用域标识。
    猜你喜欢
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2010-10-04
    • 2016-07-28
    相关资源
    最近更新 更多