我的数据库中的每个表都有这些固定列:
感谢jooq feature自动处理record_version和record_timestamp。
是否可以集中并自动化create_time的维护? 内部jooq已经在管理前两个特殊领域。
我可以将处理程序放在某处以填充create_time值吗? 这样做,我可以删除一些样板代码来初始化这个字段。
我在每个表上都有另一个字段:update_by_account;无论如何如果我能够管理前面提到的字段(create_time),我想我也会处理这个字段。
提前致谢
答案 0 :(得分:2)
您要找的是Record
和UpdatableRecord
的{{3}}。它从jOOQ 3.0开始尚未实施
将来,此功能将允许在jOOQ记录存储,插入,更新,删除等时注入一些行为。这将包括您要求的内容以及jOOQ当前正在执行的操作< / p>
record_version
record_timestamp
用于乐观锁定的列。
你现在可以做的是实现Listener API feature并让它“检测”它是否应该变为活动并覆盖create_time
的绑定值。这可能不得不求助于解析或至少使用正则表达式匹配您的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;
无论您如何访问数据库,这都将保证该值可用...