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:.script 文件在多个项目执行[多线程环境]并行期间自动被删除?
RazorSQL 导致 HSQLDB 抛出 org.hsqldb.HsqlException:需要大于 '2.1.0.0' 的客户端驱动程序版本。 HSQLDB 服务器版本是 '2.3.4'