WAIT 子句

WAIT 子句导致数据库服务器挂起进程,直到释放锁或直到未释放锁但已超过了指定的秒数为止。

当您请求 WAIT 选项时,数据库服务器为防止死锁的可能性提供保护。在数据库服务器挂起进程之前,它检查挂起进程是否会导致死锁。如果数据库服务器发现可能发生死锁,则终止该操作(否决您的等待指令)并返回错误代码。在疑似死锁或实际死锁的情况下,数据库服务器都返回错误。

请谨慎地使用无限制的等待期间,当您指定不带 seconds 的 WAIT 选项时会产生这种情况。如果您不指定上限,则放置了锁的进程会以某种方式不释放它,被挂起的进程可能无限地等待。由于不存在真的死锁状况,所以数据库服务器不采取纠正活动。

在网络环境中,DBA 使用 ONCONFIG 参数 DEADLOCK_TIMEOUT 来建立 seconds 的缺省值。如果您使用 SET LOCK MODE 语句来设置上限,则仅当您的等待期间比系统缺省值更短时,才应用您的值。