SET LOCK MODE 语句

使用 SET LOCK MODE 语句来定义数据库服务器如何处理一个试图访问锁定了的行或表的进程。

此语句是对 SQL 的 ANSI/ISO 标准的扩展。

语法

元素 描述 限制 语法
seconds 在发出错误之前,进程等待释放锁的最大秒数 仅当比系统缺省值更短时,才是有效的 文字的数值

用法

当进程试图访问锁定了的行或表时,此语句可以下列方式定向数据库服务器的响应。

锁定方式
作用
NOT WAIT
数据库服务器立即结束操作并返回错误代码。这是缺省的情况。
WAIT
数据库服务器挂起进程,直到释放锁为止。
WAIT seconds
数据库服务器挂起进程,直到释放锁或直到等待期间结束为止。如果在等待期间之后该锁定保持,则操作结束并返回错误代码。

要获取本文档中术语锁模式的两种不同含意的描述,请参阅相关的概念部分中的“锁定颗粒度”。

要避免在尝试读取并发会话对其持有排他行级锁的操作中等待,您还可使用 LAST COMMITTED 特性,或者通过在 SET ISOLATION COMMITTED READ 语句中显式地设置它,或者通过设置 USELASTCOMMITTED 配置参数或 USELASTCOMMITTED 会话环境选项。

示例

在下例中,用户指定如果进程请求锁定了的行,则操作应立即结束并应返回错误代码:
SET LOCK MODE TO NOT WAIT;
在下例中,用户指定应挂起进程直到释放该锁为止:
SET LOCK MODE TO WAIT;
下一示例在任何等待的长度上设置上限 17 秒:
SET LOCK MODE TO WAIT 17;