一、该问题的重现步骤是什么?
假设一个表A引用了blade_user的id,即用户id,当该用户被删除,A表在获取用户时即会出错,因为在查询时该用户已经不存在,我能想到的解决办法和缺点如下,麻烦请问在这种情况下,良好的实践是什么,如果保证数据一致性?
1. 在删除用户时轮询引用的所有表,如果被用到,不允许删除。这种入侵性太强,如果在User代码中添加或使用切片,而且需要所有用到的模块都这么做,不是很现实
2. 因为是逻辑删除,可以在A查询用户时将被删除的用户也带上。这种方法需要增加方法来查询用户,另外在A页面看到此用户时也查不到该用户,删除的意义被减弱。
3. 不使用逻辑删除,在数据库中使用外键引用,用户被删除时提示被其他模块使用。这种方法直接废除了逻辑删除,但操作起来比较方便。
扫一扫访问 Blade技术社区 移动端