jooq,在insert上填充字段值,类似于record_timestamp

时间:2013-06-13 16:22:32

标签: java sql jooq

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

  • record_version
  • record_timestamp
  • CREATE_TIME

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

是否可以集中并自动化create_time的维护? 内部jooq已经在管理前两个特殊领域。

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

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

提前致谢

1 个答案:

答案 0 :(得分:2)

未来的jOOQ版本:

您要找的是RecordUpdatableRecord的{​​{3}}。它从jOOQ 3.0开始尚未实施

将来,此功能将允许在jOOQ记录存储,插入,更新,删除等时注入一些行为。这将包括您要求的内容以及jOOQ当前正在执行的操作< / p>

  • record_version
  • record_timestamp

用于乐观锁定的列。

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

你现在可以做的是实现Listener API feature并让它“检测”它是否应该变为活动并覆盖create_time的绑定值。这可能不得不求助于解析或至少使用正则表达式匹配您的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;

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