2

是否有可能以某种方式更新冲突中的多个值?比如像这样:

val a = quote {
  query[Product]
    .insert(_.id -> 1, _.sku -> 10)
    .onConflictUpdate((t, e) => t.sku -> (t.sku + e.sku), t.abc -> e.abc)
}

我像上面那样尝试过,当我有两个值时,总是得到“未找到:值 t”错误。该文档也没有回答这个方向的问题。

4

1 回答 1

2

是的,您可以在插入冲突时更新多个值。为此,只需提供多个带有映射的 lambda,如下所示

val q = quote {
  query[Product]
    .insert(lift(product))
    .onConflictUpdate(
      (t, e) => t.sku -> (t.sku + e.sku),
      (t, e) => t.abc -> e.abc)
}

这将为 MySQL 生成以下 SQL:

INSERT INTO product (id,sku,abc) VALUES (?, ?, ?) 
ON DUPLICATE KEY UPDATE sku = (sku + VALUES(sku)), abc = VALUES(abc)
于 2018-12-20T19:31:27.867 回答