我正在创建2个表,一个名为用户,另一个名为 images ,每个用户可以拥有一个头像,指的是图像<中的图像/ em> table,但是每个图像都有一个作者来识别谁上传/创建了图像,而这个作者引用了 user 表中的用户,并且我为两者添加了外键约束,所以这些2表变得相互依赖,这使得插入/删除操作变得一团糟...我想知道是否有人可能想出更好的设计模式,比如创建另一个表或任何东西以便我可以避免这种相互依赖的情况?感谢。
答案 0 :(得分:0)
只要mysql没有提供执行延迟约束检查的方法,为您执行此操作的唯一方法是使用
禁用约束检查SET FOREIGN_KEY_CHECKS = 0;
然后在完成后立即启用它
SET FOREIGN_KEY_CHECKS = 1;
但是,当您处于&#34; sparta&#34; -mode时,您需要非常小心并且不要破坏数据库的完整性。
PS:此选项是特定于会话的,因此其他连接仍会像通常一样尊重约束。
PPS:只要您将数据库置于破坏状态 - 我强烈建议您在单个事务中进行所有更改,以便其他会话无法观察到不一致的状态。