2
我试图使用jooq dsl进行插入/更新查询。 我们在表中有一个唯一的(MemberId,GroupId)组合和一个组成员资格Enum。 使用(MemberId,GroupId,RoleEnum)发送订阅请求 查询应向数据库插入新条目,但如果MemberId,GroupId组合已存在 - 则只有在新RoleEnum大于现有值时更新条目一。Jooq中的条件onDuplicateKeyUpdate
我没能做到这一点使用一个与jooq的Dsl查询,所以不是我只好用两个查询(GET,然后插入或相应更新),但后来我失去了操作的原子性...
有没有办法做到这一点与jooqDsl一个查询?
模拟是什么意思?它是否会生成正确的代码,但是jOOQ DSL看起来不同,还是会生成不同的SQL,但它的行为映射到http://www.postgresql.org/docs/中定义的“ON CONFLICT”定义的行为上9.5/static/sql-insert.html? – Yaneeve
@Yaneeve:'ON DUPLICATE KEY UPDATE'子句是MySQL特有的。但是它的语义可以在PostgreSQL上通过生成等价的'ON CONFLICT'子句来模拟。即jOOQ DSL中的'onDuplicateKeyUpdate()'子句适用于两个数据库。本地在MySQL上,并在PostgreSQL上“模拟”。 –