使用toxi solution时如何确定需删除关联记录的代理表?
关联代理表删除判断方法
你提到的images_posts、images_users是典型的多对多关系中间表,分别对应图片和帖子、图片和用户的关联映射,判断删除目标可以按下面两个路径走:
- 按业务场景直接判定
如果删除请求是从特定业务模块发起,可以直接对应到目标中间表:- 操作来自用户侧(比如删除用户头像、用户个人相册图片):对应删除
images_users表中image_id等于传入ID的记录 - 操作来自内容侧(比如删除帖子配图、内容附件图片):对应删除
images_posts表中image_id等于传入ID的记录
- 操作来自用户侧(比如删除用户头像、用户个人相册图片):对应删除
- 无明确业务场景时查询判定
如果不知道图片的关联类型,分别查询两个中间表匹配即可:- 执行查询语句
SELECT COUNT(*) FROM images_posts WHERE image_id = 传入的id,返回结果大于0就先删除该表的匹配记录 - 执行查询语句
SELECT COUNT(*) FROM images_users WHERE image_id = 传入的id,返回结果大于0就删除该表的匹配记录
- 执行查询语句
注:如果你的业务支持单张图片同时关联用户和帖子,需要把两个表的关联记录都删除后,再删除
images表的主记录,避免外键约束报错。
内容的提问来源于stack exchange,提问作者Danabek Duisekov
相关产品推荐
相关产品推荐

