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();
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的意见!