我正在创建2个表,一个称为用户,另一个称为图像,每个用户可以有一个化身,该化身引用图像表中的图像,但是每个图像都有一个作者来标识谁上传/创建了该图像,并且该作者引用了给用户表中的用户,我为这两个表添加了外键约束,因此这两个表变得相互依赖,这使插入/删除操作变得一团糟...我想知道是否有人可以提出更好的设计模式,例如创建另一个表或其他任何东西,这样我就可以避免这种相互依赖的情况?谢谢。
最佳答案
一旦mysql不提供执行延迟约束检查的方法,为您执行此操作的唯一方法就是完全禁用约束检查
SET FOREIGN_KEY_CHECKS = 0;
然后在完成后立即将其启用
SET FOREIGN_KEY_CHECKS = 1;
但是您需要非常小心,并且在“ sparta”模式下不要破坏数据库的完整性。
PS:此选项是特定于会话的,因此其他连接仍将照常遵守约束。
PPS:一旦您要使数据库进入崩溃状态,我强烈建议您在单个事务中进行所有更改,以使其他会话无法观察到不一致的状态。