Slick 3.0:从事务中的多个表中删除行 [英] Slick 3.0: Delete rows from multiple tables in a transaction
本文介绍了Slick 3.0:从事务中的多个表中删除行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从几个表中删除行.下面的伪 SQL 语句描述了我的确切意图,
I want to delete rows from a few tables. My exact intention is depicted in the pseudo SQL statements below,
delete from users where oid={user_oid};
login_infos_oid = select login_infos_oid from users_login_infos where users_oid={user_oid};
delete from users_login_infos where users_oid={user_oid};
delete from password_infos where login_infos_oid={login_infos_oid};
delete from login_infos where oid={login_infos_oid};
users_login_infos
表有 2 列 users_oid
和 login_infos_oid
并加入 users
和 login_infos
> 表.我如何在事务中的 Slick 3.x 中很好地做到这一点?谢谢.
users_login_infos
table has 2 columns users_oid
and login_infos_oid
and joins users
and login_infos
tables . How do I this nicely in Slick 3.x within a transaction? Thanks.
推荐答案
我不认为这是一个好的解决方案,但目前就是这样,
I do not think this is a good solution but for the time being this is what it is,
val userQuery = slickUsers.filter(_.username === username)
val userLoginInfoQuery = slickUserLoginInfos.filter(_.userOid in userQuery.map(_.oid))
val loginInfoQuery = slickLoginInfos.filter(_.oid in userLoginInfoQuery.map(_.loginInfoOid))
val passwordInfoQuery = slickPasswordInfos.filter(_.loginInfoOID in userLoginInfoQuery.map(_.loginInfoOid))
db.run((loginInfoQuery.delete andThen
passwordInfoQuery.delete andThen
userLoginInfoQuery.delete andThen
userQuery.delete).transactionally)
这篇关于Slick 3.0:从事务中的多个表中删除行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文