首页 > 解决方案 > Hsqldb 2.5.0 系统版本

问题描述

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

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

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

标签: hsqldb

解决方案


由于我发现了一些我希望对 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 系统版本控制。

编辑:这个答案并不令人满意,请参阅这里以获得更好的东西


推荐阅读