2014-05-08 26 views
2

让我们考虑一下这个表:如何有条件地进行行插入,即INSERT INTO与WHERE NOT EXISTS?

case class FavoriteStore(userId: Long, storeId: Long) 

class FavoriteStoreTable(tag: Tag) 
    extends Table[FavoriteStore](tag, "FAVORITE_STORE") { 
    def userId = column[Long]("USER_ID") 
    def storeId = column[Long]("STORE_ID") 
    override def * = (userId, storeId) <> 
       (FavoriteStore.tupled, FavoriteStore.unapply) 
} 

我希望能写下面的SQL查询:

+----------+----------+ 
    | user_id | store_id | 
    +----------+----------+ 
    | 39 | 8  | 
    | 8  | 39 | 
    | 5  | 11 | 
    +----------+----------+ 

我用油滑与(删除索引&外键,以简化IT)映射它与斯利克:

INSERT INTO favorite_store (user_id, store_id) VALUES (39, 8) 
WHERE NOT EXISTS 
    (SELECT * FROM favorite_store WHERE user_id = 39 AND store_id = 8) 

任何想法?

+0

油滑目前不支持WHERE NOT EXISTS。请打开功能请求:https://github.com/slick/slick/issues/new – cvogt

+0

谢谢@cvogt,会做。 – n1r3

回答