Hsqldb 2.5.0 系统版本

Posted

技术标签:

【中文标题】Hsqldb 2.5.0 系统版本【英文标题】:Hsqldb 2.5.0 SYSTEM VERSIONING 【发布时间】:2020-03-17 01:56:43 【问题描述】:

我想使用 2.5.0 版附带的系统版本控制,但是当我启动以下类型的请求时:

SELECT firstname, lastname, email FROM customer FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP - 1 YEAR

当有一些刚刚插入的记录时,它没有找到任何记录...

【问题讨论】:

【参考方案1】:

您的查询意味着“返回一年前存在的行”。因为您最近插入了行,或者最近添加了系统版本控制,所以查询不返回任何行。

【讨论】:

【参考方案2】:

由于我发现了一些我希望对 Hsqldb 2.5.x 附带的系统版本控制做的事情,我允许自己发布这个答案。

要检索行的先前版本,即当前版本之前的最后一个版本,或者更简单地说,要查找 1 年所做的所有 UPDATE,只需执行查询:

SELECT previous.* FROM customer AS current, customer FOR SYSTEM_TIME
FROM CURRENT_TIMESTAMP - 1 YEAR TO CURRENT_TIMESTAMP AS previous
WHERE current.customerid = ? AND previous.customerid = ? AND
current.start = previous.stop;   

假设:

    start: is the column declared as TIMESTAMP GENERATED ALWAYS AS ROW START.
    stop: is the column declared as TIMESTAMP GENERATED ALWAYS AS ROW END.
    customerid: is the primary key to the customer table, because I have to find the UPDATE for each customer.

我现在必须找到 INSERT 和 DELETE 查询,我会回来的。

PS:我没有发明任何东西,它来自 BD2 文档,所以它可能不是最佳的,但它适用于 Hsqldb 系统版本控制。

编辑:这个答案并不令人满意,see here 更好的东西

【讨论】:

以上是关于Hsqldb 2.5.0 系统版本的主要内容,如果未能解决你的问题,请参考以下文章

Hsqldb安装与使用

HSQLDB:.script 文件在多个项目执行[多线程环境]并行期间自动被删除?

RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 '2.1.0.0' 的客户端驱动程序版本。 HSQLDB 服务器版本是 '2.3.4'

Hsqldb 版本问题:客户端驱动程序版本大于 .是必须的

如何找出给定 JBoss 实例的 HSQLDB 版本

HSQLDB客户端版本不兼容