使用 Slick 的 insertOrUpdate 区分插入和更新
Distinguishing between inserting and updating with Slick's insertOrUpdate
有什么方法可以知道 Slick 在调用 insertOrUpdate
时是向 table 添加了新行还是更新了现有行?
该函数似乎总是 return 1,这是有道理的,因为一行总是受到影响,无论是通过创建还是通过更新。但是好像没有办法区分这两种情况。
除了滚动我自己的多步更新插入例程之外,我还有其他选择吗?
来自http://slick.typesafe.com/doc/3.1.0/queries.html#upserting
val updated = users.insertOrUpdate(User(Some(1), "Admin", "Zeiger"))
// returns: number of rows updated
val updatedAdmin = (users returning users).insertOrUpdate(User(Some(1), "Slick Admin", "Zeiger"))
// returns: None if updated, Some((Int, String)) if row inserted
有什么方法可以知道 Slick 在调用 insertOrUpdate
时是向 table 添加了新行还是更新了现有行?
该函数似乎总是 return 1,这是有道理的,因为一行总是受到影响,无论是通过创建还是通过更新。但是好像没有办法区分这两种情况。
除了滚动我自己的多步更新插入例程之外,我还有其他选择吗?
来自http://slick.typesafe.com/doc/3.1.0/queries.html#upserting
val updated = users.insertOrUpdate(User(Some(1), "Admin", "Zeiger"))
// returns: number of rows updated
val updatedAdmin = (users returning users).insertOrUpdate(User(Some(1), "Slick Admin", "Zeiger"))
// returns: None if updated, Some((Int, String)) if row inserted