只读列行为
适用于 ❌ 开源版 ✅ Express 版 ✅ 专业版 ✅ 企业版
当使用 只读列 时,默认情况下,任何尝试 插入 或 更新 的值都会被忽略。 以下 Settings 允许覆盖和只读列的默认行为
-
Settings.readonlyInsert: 在 INSERT 语句 中,或者在 MERGE 语句 的INSERT子句中。 -
Settings.readonlyUpdate: 在 UPDATE 语句 中,或者在 MERGE 语句 的UPDATE子句中。 -
Settings.readonlyTableRecordInsert: 在TableRecord.insert()操作中,或者TableRecord.store()或UpdatableRecord.merge()的INSERT部分或执行中。 如果此项被停用,Settings.readonlyInsert仍然适用 -
Settings.readonlyUpdatableRecordUpdate: 在UpdatableRecord.update()操作中,或者TableRecord.store()或UpdatableRecord.merge()的UPDATE部分或执行中。 如果此项被停用,Settings.readonlyUpdate仍然适用
这些标志中的每一个都是 org.jooq.conf.WriteIfReadonly 类型,具有以下允许的状态
-
WRITE: 写入到列,就像它不是只读的一样。 这实际上关闭了该功能。 -
IGNORE: 在相关语句中忽略该列。 这是默认设置。 -
THROW: 如果该列包含在相关的 DML 语句中,则抛出异常。
默认行为 IGNORE 在将 POJO 数据加载到 org.jooq.UpdatableRecord 并存储它时,同时忽略 IDENTITY 列、计算列、合成列(例如 合成 ROWID)等,特别有用。
示例配置
Settings settings = new Settings()
.withReadonlyInsert(WriteIfReadonly.THROW) // Defaults to IGNORE
.withReadonlyUpdate(WriteIfReadonly.THROW) // Defaults to IGNORE
.withReadonlyTableRecordInsert(WriteIfReadonly.THROW) // Defaults to IGNORE
.withReadonlyUpdatableRecordUpdate(WriteIfReadonly.THROW); // Defaults to IGNORE
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!