可用版本: Dev (3.21) | 最新 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15

REFERENCING子句

适用于 ❌ 开源版   ✅ Express 版   ✅ 专业版   ✅ 企业版

触发器在数据突变执行时执行。在此期间,触发器可以查看修改前(OLD 伪表)或修改后(NEW 伪表)的行或表的状态。具体来说:

  • INSERT:仅 NEW 可用
  • UPDATEOLDNEW 均可用
  • DELETE:仅 OLD 可用

在极少数情况下,默认的 OLDNEW 伪表标识符与模式中的实际表冲突,可以使用 REFERENCING 子句为触发器的作用域重命名这些标识符。在某些方言中,REFERENCING 总是强制性的,而在另一些方言中,则完全不支持。

例如:

 // A trigger that prevents the update of NULL titles in BOOK
create.createTrigger("trg")
      .beforeUpdate().of(BOOK.TITLE)
      .on(BOOK)
      .referencingOldAs("o")
      .referencingNewAs("n")
      .forEachRow()
      .as(if_(BOOK.as("o").TITLE.isNull()).then(
            variable(BOOK.as("n").TITLE.getQualifiedName(), BOOK.TITLE.getDataType()).setNull()
      ))
      .execute();

反馈

您对此页面有任何反馈吗? 我们很乐意听到您的意见!

The jOOQ Logo