Есть ли способ заставить jOOQ выполнять оператор SQL (в моем случае CHECKPOINT) после каждого удаления?
Самый простой способ продвижения вперед - использовать ExecuteListener
, который проверяет, является ли текущий оператор оператором DELETE
. Вы можете сделать это:
- Либо с помощью регулярного выражения в сгенерированном SQL, если у вас также есть простые операторы SQL, которые не генерируются с помощью jOOQ DSL
- Или с помощью проверки
instanceof Delete
на ExecuteContext.query()
, если вы уверены, что используете только операторы jOOQ DSL.
Это для обнаружения выполнения такого оператора. Конечно, ваше последующее заявление может быть выполнено по-разному.
В идеале должен быть способ указать таблицы, для которых это происходит.
Это немного сложнее. Вы можете реализовать свой собственный VisitListener
, который находит все операторы удаления в определенных таблицах.
Это работает, только если вы используете DSL API, если вы не хотите запустить VisitListener
для запроса jOOQ, который вы анализируете на основе ваших простых операторов SQL, в случае чего вы могли бы также сделайте это для произвольных других утверждений. Предполагая, что анализатор может анализировать ваш SQL.