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

Posted

技术标签:

【中文标题】HyperSQL (HSQLDB) 显式共享(读取)锁语法【英文标题】:HyperSQL (HSQLDB) explicit shared (read) lock syntax 【发布时间】:2015-01-29 14:50:30 【问题描述】:

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

供更新 仅供阅读

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

如果游标是用 FOR READ ONLY 声明的,那么它是不可更新的。

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

如果FOR UPDATE 采用排他(写)锁,FOR READ ONLY 指令是否改为采用共享(读)锁?

【问题讨论】:

【参考方案1】:

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

【讨论】:

所以 MVLOCKS 没有“FOR SHARE”成语。感谢您的澄清。

以上是关于HyperSQL (HSQLDB) 显式共享(读取)锁语法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Hypersql 数据库(HSQLDB)中设置 Rank 函数

无法以新用户身份连接到 HyperSQL / HSQLDB 数据库

HSQLDB (HyperSQL) - 如何以毫秒精度将 UNIX 时间戳作为数字获取

如何在 Hypersql 数据库(HSQLDB)中选择多列但仅按一列分组?

HyperSQL 链接参数中文件的路径

什么是 HSQLDB(Hyper SQL)以及它与其他数据库有何不同?