java - 在每个 DELETE 之后执行 SQL 语句
问题描述
有没有办法让 jOOQCHECKPOINT
在每个之后执行一个 SQL 语句(在我的情况下是 a )DELETE
?
理想情况下,还有一种方法可以指定发生这种情况的表。
我正在使用的 RDBMS (HSQLDB) 不允许在触发器中使用此语句,否则我会这样做。
解决方案
有没有办法让 jOOQ 在每次 DELETE 之后执行 SQL 语句(在我的情况下是 CHECKPOINT)?
最简单的方法是使用ExecuteListener
which 检查当前语句是否为DELETE
语句。你可以这样做:
- 如果您还有不是使用 jOOQ DSL 生成的普通 SQL 语句,则在生成的 SQL 上使用正则表达式
- 或者,如果您确定您只在运行 jOOQ DSL 语句,请使用
instanceof Delete
检查。ExecuteContext.query()
这是为了检测这样一个语句的执行。当然,您的后续声明可以以不同的方式运行。
理想情况下,还有一种方法可以指定发生这种情况的表。
这有点棘手。您可以实现自己的VisitListener
查找特定表上的所有删除语句。
这仅在您使用 DSL API 时才有效,除非您愿意在基于普通 SQL 语句解析VisitListener
的 jOOQ 查询上运行,在这种情况下,您也可以对任意其他语句执行此操作。假设解析器可以解析您的 SQL。
推荐阅读
- sql - 我需要将 SQL 中的所有活动分配给一个 ID,但目前每个活动都有三个不同的 ID
- android - 如何将实时移动摄像头馈送到计算机?
- laravel - 对于具有所有权限的角色“admin”的用户,不会显示 Voyager 管理菜单
- python - 绑定在 TypeVar 上的 TypeVar 的解决方法?
- haskell - Haskell中具有螺旋有序坐标列表的广度优先搜索
- android - Android Studio 3.5 Code Formatting 改变了 XML Layout 中 Layout 层级中 UI 组件的顺序
- javascript - JsGrid 自定义删除确认消息
- ruby - 如何使用 apnotic gem 发送 Apple 推送通知?
- php - 我在控制器内部的 laravel 中获取数据数组时遇到问题
- android - Android 第三方导致“应用未安装”错误