hsqldb - Hsqldb 2.5.0 系统版本
问题描述
我想使用版本 2.5.0 附带的系统版本控制,但是当我启动以下类型的请求时:
SELECT firstname, lastname, email FROM customer FOR SYSTEM_TIME AS OF CURRENT_TIMESTAMP - 1 YEAR
当有一些刚刚插入的记录时,它没有找到任何记录......
解决方案
由于我发现了一些我希望对 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 系统版本控制。
编辑:这个答案并不令人满意,请参阅这里以获得更好的东西
推荐阅读
- c++ - 实现文件中的私有变量声明
- reactjs - 单击按钮时,不会更新先前的状态
- python - 在 argparse.ArgumentParser 中构建所需的组
- javascript - 如何在“onclick”上颠倒 div 元素的顺序?
- html - 声明一个指向另一个变量的变量的做法是否有名称?
- python - 单击QListWidget中的列表项后如何触发功能?PyQt5
- memory-management - 在操作系统中使用分页方法如何证明其开销是合理的?
- python - 一起使用 Snakemake 和 Dask 有意义吗?
- python - Python 3 urllib 库没有返回与 Chrome 上检查的相同的 HTML
- android - API < 23 上带有图像选择器的 MaterialButton