是否有办法让jOOQ在每个{{1}}之后执行一条SQL语句(在我的情况下为CHECKPOINT
)?
理想情况下,还有一种方法可以指定发生这种情况的表。
我正在使用的RDBMS(HSQLDB)不允许在触发器中使用此语句,否则我会以这种方式完成。
答案 0 :(得分:2)
是否有办法让jOOQ在每个DELETE之后执行一条SQL语句(在我的情况下为CHECKPOINT)?
最简单的方法是使用ExecuteListener
来检查当前语句是否为DELETE
语句。您可以这样做:
ExecuteContext.query()
上使用instanceof Delete
检查。这是为了检测这样一条语句的执行情况。您的跟进声明当然可以以不同的方式运行。
理想情况下,还有一种方法可以指定发生这种情况的表。
这有点棘手。您可以实现自己的VisitListener
,以查找特定表上的所有删除语句。
这仅在使用DSL API时有效,除非您愿意对基于普通SQL语句的parse进行的jOOQ查询运行VisitListener
对于任意其他语句也要执行此操作。假设解析器可以解析您的SQL。
答案 1 :(得分:1)
您应该能够使用Execute语句从jOOQ内部执行“检查点”,例如:
//create connection
String sql = "use [MyDatabase] checkpoint ";
connection.createStatement().executeQuery(sql);
话虽如此,为什么要在每个删除的记录之后运行检查点?如果您担心将数据写入磁盘,只需运行“检查点”,即可遍历所有删除操作。