【发布时间】:2013-03-08 06:09:00
【问题描述】:
是否可以在 MySQL 中暂时禁用约束?
我有两个 Django 模型,每个模型都有一个指向另一个模型的外键。由于外键约束,删除模型实例会返回错误:
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed() #a foreign key constraint fails here
cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()
是否可以暂时禁用约束并删除?
【问题讨论】:
-
要么我不明白你想做的事,要么你想做的事非常、非常、非常难看。即使你能做到,你也不应该这样做。
-
删除并重新应用 FK 正在更改您的数据库。你试图挑战那些让系统看到某种意义的限制,它没有考虑到 FK 可能是一个临时的东西,如果它知道,它会恐慌。
-
你想做什么很奇怪。但是您使用的是哪个数据库?
-
如果您没有禁用约束,而是将其永久修改为
ON DELETE SET NULL,该怎么办?这将完成类似的事情,您不必打开和关闭密钥检查。 -
@dnagirl:确实会更好。我该怎么做?
标签: mysql sql django django-models