只读列行为
适用于 ❌ 开源版 ✅ 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
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!