直到实现事务结束,MySQL似乎都没有受到限制。如果是这样,在两个孩子记录中转换父母的最佳方法是什么?

例如,如果我们有一些UI插槽,每个用户都可以在其中放置项目。鉴于slotid在item表中为FK且Items表中的itemId和slotId列具有唯一索引,应该如何在用户的插槽中切换项目?

有没有比使用SET FOREIGN_KEY_CHECKS = 0和事务中的三个更新更好的方法了?

[编辑] SlotId不能为空,因此不应始终将该项指定在某个插槽中-因此将其设置为可空将意味着放弃语义正确性和重要的安全检查,只是为了使某些实现细节更容易。

最佳答案

我描述了类似的问题in this post

似乎使列NULL'able的危害较小,因为在这种情况下不必禁用外键约束。

07-27 20:02