在H2数据库表中找出何时修改了行

问题描述

| 假设我有两个进程A和B在H2数据库表T上执行事务。 进程A在T上执行CRUD(创建,读取,更新,删除)。 进程B想知道T中的行L何时被最后修改(例如,B提供了“ 0”值)。 可以在T中创建一列,以记录每行的最后修改时间,但是我想知道H2是否已经在某个地方保存了此信息,以及是否可以访问它。     

解决方法

据我所知,H2中没有这样的功能(可能在任何RDBMS中都没有)。原因很简单-每个记录额外增加4或8个字节可能会对整体数据库大小产生巨大影响,尤其是对于小型记录。同时也会对性能产生轻微影响。 但是通过使用额外的列和在更新触发器上实现此功能相对简单。另外,某些数据库可能会进一步简化它,例如MySQL:
ts TIMESTAMP DEFAULT 0 ON UPDATE CURRENT_TIMESTAMP
另外,请区分数据库服务器时钟,进程A时钟和进程B时钟。在现实世界中,它们很可能不会相同。     ,数据库仅存储您设置的内容。 因此,您必须设置表来存储修改时间,一种真正简单的方法是通过创建一个值为2的“计算列”,每次修改记录时都会对计算列进行赋值。
CREATE TABLE TEST(ID INT,NAME VARCHAR,LAST_MOD TIMESTAMP AS NOW());
仅供参考:http://www.h2database.com/html/features.html#computed_columns     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...