REFERENCING子句
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
触发器在数据突变执行时执行。在此期间,触发器可以查看修改前(OLD
伪表)或修改后(NEW
伪表)的行或表的状态。具体来说:
-
INSERT
:仅NEW
可用 -
UPDATE
:OLD
和NEW
均可用 -
DELETE
:仅OLD
可用
在极少数情况下,默认的 OLD
或 NEW
伪表标识符与模式中的实际表冲突,可以使用 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();
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!