如何解决在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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。