這是面試中遇到的一個題
如果兩個表的主鍵互為對方的外來鍵如何處理?
方案一
適合直接在資料庫中操作的時候用
set @@foreign_key_checks=OFF
方案二
外來鍵是可以為null
的,所以在框架的ORM中使用時,把對應欄位的外來鍵設定為允許為null
,存的時候先存其中一個model
(此時外來鍵為null
), 存完另一個model
再來更新其外來鍵即可.
以Django為例
from django.db import models
class Action(models.Model):
step = models.ForeignKey(`Step`, related_name=`step`, null=True, blank=True)
class Step(models.Model):
action = models.ForeignKey(`Action`, related_name=`action`, null=True, blank=True)
存的時候這樣
a = Action(step_id=None)
a.save()
s = Step(action_id=a.id)
s.save()
a.step_id = s.id
a.save()