Я попытался использовать jooq dsl для запроса на вставку/обновление. У нас есть уникальная комбинация (MemberId, GroupId) в нашей таблице и членство в группе Enum. При отправке запроса на подписку с помощью (MemberId, GroupId, RoleEnum) Запрос должен вставить новую запись в db, но если уже существует команда MemberId, GroupId, то только обновить запись, если новый RoleEnum больше существующего один.Условный onDuplicateKeyUpdate в Jooq
мне не удалось сделать это с помощью одного запроса с jooq Dsl, так что вместо этого я должен был использовать два запроса (GET, а затем вставить или обновить соответственно), но тогда я потеряю атомарность операции ...
Есть ли способ сделать это с помощью одного запроса с jooqDsl?
Что означает эмулировать? Создает ли он правильный код, но jOOQ DSL выглядит иначе, или он генерирует другой SQL, но его поведение сопоставляется с определениями 'ON CONFLICT', как определено в http://www.postgresql.org/docs/ 9.5/static/sql-insert.html? – Yaneeve
@Yaneeve: предложение 'ON DUPLICATE KEY UPDATE' является специфичным для MySQL. Но его семантика может быть эмулирована на PostgreSQL путем создания эквивалентного предложения ON ON CONFLICT. То есть предложение 'onDuplicateKeyUpdate()' в jOOQ DSL будет работать в обеих базах данных. Натурально на MySQL и «эмулируется» на PostgreSQL. –