final int storeInsert0(Field<?>[] storeFields) { DSLContext create = create(); InsertQuery<R> insert = create.insertQuery(getTable()); addChangedValues(storeFields, insert); // Don't store records if no value was set by client code if (!insert.isExecutable()) { if (log.isDebugEnabled()) log.debug("Query is not executable", insert); return 0; } // [#1596] Set timestamp and/or version columns to appropriate values BigInteger version = addRecordVersion(insert); Timestamp timestamp = addRecordTimestamp(insert); // [#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 Collection<Field<?>> key = setReturningIfNeeded(insert); int result = insert.execute(); if (result > 0) { for (Field<?> storeField : storeFields) changed(storeField, false); // [#1596] If insert was successful, update timestamp and/or version columns setRecordVersionAndTimestamp(version, timestamp); // [#1859] If an insert was successful try fetching the generated values. getReturningIfNeeded(insert, key); fetched = true; } return result; }