diff --git a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java index 189699c28f..aa95643eae 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableRecordImpl.java @@ -183,7 +183,12 @@ implements InsertQuery insert = create.insertQuery(getTable()); List> changedFields = addTouchedValues(storeFields, insert, false); - if (changedFields.isEmpty()) { + // [#1596] Set timestamp and/or version columns to appropriate values + BigInteger version = addRecordVersion(insert, false); + Timestamp timestamp = addRecordTimestamp(insert, false); + + // [#17708] DEFAULT VALUES applies only if we're not generating timestamp and/or version values! + if (changedFields.isEmpty() && version == null && timestamp == null) { // Don't store records if no value was set by client code if (FALSE.equals(create.settings().isInsertUnchangedRecords())) { @@ -197,10 +202,6 @@ implements insert.setDefaultValues(); } - // [#1596] Set timestamp and/or version columns to appropriate values - BigInteger version = addRecordVersion(insert, false); - Timestamp timestamp = addRecordTimestamp(insert, false); - // [#814] Refresh identity and/or main unique key values // [#1002] Consider also identity columns of non-updatable records // [#1537] Avoid refreshing identity columns on batch inserts