gpt4 book ai didi

java - jooq,插入时填充字段值,类似于record_timestamp

转载 作者:行者123 更新时间:2023-11-30 04:20:53 29 4
gpt4 key购买 nike

我的数据库中的每个表都有这些固定列:

  • 记录版本
  • 记录时间戳
  • 创建时间

感谢jooq feature record_version 和 record_timestamp 会自动处理。

是否可以集中并自动化维护create_time?jooq 内部已经管理了前两个特殊字段。

我可以在某处放置一个处理程序来填充 create_time 值吗?这样做,我可以删除一些样板代码来初始化该字段。

每个表上都有另一个字段:update_by_account;无论如何,如果我能够管理前面提到的字段(create_time),我想我也会处理这个字段。

提前致谢

最佳答案

future 的 jOOQ 版本:

您正在寻找的是 Listener API feature对于RecordUpdatableRecord。截至jOOQ 3.0尚未实现

将来,此功能将允许在存储、插入、更新、删除等时向 jOOQ 的记录注入(inject)一些行为。这将包括您所请求的内容以及 jOOQ 当前正在使用其

  • 记录版本
  • 记录时间戳

用于乐观锁定的列。

jOOQ 2.x 或 3.0 的解决方案:

您现在可以做的是实现 ExecuteListener并让它“检测”它是否应该变为 Activity 状态并覆盖 create_time 的绑定(bind)值。这可能需要解析或至少使用正则表达式匹配您的 SQL 语句。

纯 SQL 解决方案:

但是,在我看来,create_time 的最佳选择是为每个表编写一个触发器(Oracle 语法):

CREATE OR REPLACE TRIGGER my_trigger
BEFORE INSERT
ON my_table
REFERENCING NEW AS new
FOR EACH ROW
BEGIN
:new.create_time = SYSDATE;
END t_triggers_trigger;

这将保证无论您如何访问数据库,该值都是可用的...

关于java - jooq,插入时填充字段值,类似于record_timestamp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17092172/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com