直到实现事务结束,MySQL似乎都没有受到限制。如果是这样,在两个孩子记录中转换父母的最佳方法是什么?
例如,如果我们有一些UI插槽,每个用户都可以在其中放置项目。鉴于slotid在item表中为FK且Items表中的itemId和slotId列具有唯一索引,应该如何在用户的插槽中切换项目?
有没有比使用SET FOREIGN_KEY_CHECKS = 0和事务中的三个更新更好的方法了?
[编辑] SlotId不能为空,因此不应始终将该项指定在某个插槽中-因此将其设置为可空将意味着放弃语义正确性和重要的安全检查,只是为了使某些实现细节更容易。
最佳答案
我描述了类似的问题in this post。
似乎使列NULL
'able的危害较小,因为在这种情况下不必禁用外键约束。