代码之家  ›  专栏  ›  技术社区  ›  alex

SQL 2005-2008中的锁定行

  •  7
  • alex  · 技术社区  · 17 年前

    是否有一种方法可以在不启动事务的情况下锁定SQL 2005-2008数据库中的行,以便其他进程在该行解锁之前无法更新该行?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Gulzar Nazim    17 年前

    你可以使用 RowLock or other hints 但你应该 careful

    hold lock提示将指示SQL Server在提交事务之前保持锁。rowlock提示将只锁定此记录,而不会发出页锁或表锁。

    如果您关闭连接或连接超时,锁也将被释放。我会非常小心地这样做,因为它将停止任何点击此行的select语句。SQL Server有许多可以使用的锁定提示。当你搜索holdlock或rowlock时,你可以在网上的书中看到它们。

        2
  •  1
  •   Ricardo C    17 年前

    在服务器中执行的所有操作都发生在事务中,不管是隐式的还是显式的。

    不能简单地锁定没有事务的行(使该行为只读)。可以将数据库设置为只读,但不能只设置一行。

    解释你的目的,这可能是一个更好的解决方案。隔离级别和锁提示 row versioning .

        3
  •  0
  •   Ian Ringrose    16 年前

    你需要锁A吗 或应该 Sql Server's Application locks 你需要什么?

    应用程序锁只是一个名为“lock”、“unlock”的锁,可以检查它是否被锁定。有关详细信息,请参见上面的链接。(如果你的连接被关闭,它们会被解锁等,所以倾向于清理它们自己)