HyperSQL(HSQLDB)显式共享(读取)锁定语法

时间:2015-01-29 14:50:30

标签: sql database transactions locking hsqldb

根据HSQLDB documentation,有两个select-for-updating指令:

  • FOR UPDATE
  • FOR READ ONLY
  

如果使用SQL限定符,则使用FOR UPDATE,那么所有可更新   结果集的列可以更新。

     

如果使用FOR READ ONLY声明游标,则它不可更新。

     

在HSQLDB中,如果没有使用FOR READ ONLY或FOR UPDATE那么全部   结果集的可更新列变为可更新。这放松了   SQL标准规则,在这种情况下,仅限于可更新性   可更新的SELECT语句(其中所有列都是可更新的)。

如果FOR UPDATE采用独占(写)锁,那么FOR READ ONLY指令是否会采用共享(读)锁?

1 个答案:

答案 0 :(得分:1)

锁取决于事务模型。当使用FOR UPDATE时,LOCKS和MVLOCKS模型将表锁定以进行写入。当使用FOR READ ONLY时,它们锁定表以供读取。 MVCC模型根本不会锁定表格。