当前位置: 首页 > 面试题库 >

SQL 2005-2008中的锁定行

华泳
2023-03-14
问题内容

有没有一种方法可以在不启动事务的情况下锁定SQL 2005-2008数据库中的行,以便其他进程只有在解锁该行后才能更新该行?


问题答案:

您可以使用RowLock或其他提示,但要小心..

HOLDLOCK提示将指示SQL Server保持锁定,直到您提交事务为止。ROWLOCK提示将仅锁定该记录,而不会发出页或表锁定。

如果您关闭连接或超时,该锁也将被释放。我会非常小心,因为这将停止所有击中该行的SELECT语句。SQL
Server有许多可以使用的锁定提示。在HOLDLOCK或ROWLOCK上搜索时,您可以在联机丛书中看到它们。



 类似资料:
  • 问题内容: 我想在大约1200万条记录的表上运行以下命令。 我已经在暂存阶段完成了该操作,并且时间安排似乎还不错,但是在生产之前,我想知道在创建新列时锁定表如何工作(特别是在指定默认值的情况下)。那么,有人知道吗?整个表是否被锁定,或者在默认值插入过程中行被一一锁定?还是发生了完全不同的事情? 问题答案: 是的,它将锁定表格。 整个表具有单个架构(列集以及关联的类型)。因此, 至少 需要一个模式锁

  • 我看不出有什么区别。我读到了这篇文章:actual-use-of-lockinterruptbly-for-a-reentrantlock 想测试一下。代码如下: 这里是Inturrept班 控制台输出: 正如回答中提到的“这与常规锁()相同。但如果另一个线程中断,等待的线程lockInterruptbly()将抛出InterruptedException。”即使它是锁着的。lock()或lock

  • 问题内容: 我在这里思考:如果您有2个线程执行需要同步的FAST操作,那么非阻塞方法不是比阻塞/上下文切换方法更快/更好的方法吗? 非阻塞的意思是: while(true){如果(checkAndGetTheLock())中断;} 如果您有太多线程在锁中循环,我唯一想到的就是饥饿(CPU耗尽)。 如何平衡一种方法与另一种方法? 问题答案: 以下是 Java Concurrency in Pract

  • 我上面代码的日志是: 数据库也会更新。为什么lock()不工作?不是在lock()之后其他实例无法更新吗?还是别的什么?还是我错过了什么?

  • 问题内容: Go的包裹中有个。不幸的是,它不是递归的。在Go中实现递归锁的最佳方法是什么? 问题答案: 很抱歉没有直接回答您的问题: 恕我直言,在Go中实现递归锁的最好方法是不实现它们,而是重新设计代码以一开始就不需要它们。我认为,对他们的渴望可能表明对某些(此处未知)问题使用了错误的方法。 作为上述权利要求的间接“证明”:递归锁是否是对涉及互斥锁的某些常见情况的一种常见/正确方法,它迟早会包含在

  • 问题内容: 我找不到有关MySQL中乐观锁定的任何详细信息。我读到开始事务使两个实体上的更新保持同步,但是,它不会停止两个用户同时更新数据而引起冲突。 显然乐观锁定会解决这个问题吗?这在MySQL中如何应用。是否有SQL语法/关键字呢?还是MySQL具有默认行为? 谢谢你们。 问题答案: 关键是,乐观锁定不是数据库功能,不适用于MySQL或其他功能:乐观锁定是一种使用带有标准指令的DB进行的实践。