回答

收藏

如何在MySQL中临时禁用外键约束?

技术问答 技术问答 69 人阅读 | 0 人回复 | 2023-09-13

是否可以在MySQL中暂时禁用约束?+ K( b0 i3 ]: m- m4 x6 V
我有两个Django模型,每个模型都具有到另一个的外键。由于外键约束,删除模型实例将返回错误:* L% ?( o9 C# l6 |; [) \/ m: I
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)8 ^) m' O2 I6 x1 J2 m: r# z; P
transaction.commit_unless_managed()  #a foreign key constraint fails here4 u1 [' w0 G( G/ V/ d$ G. e2 T* S
cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)5 c" T2 A$ B5 r  ^8 v1 D
transaction.commit_unless_managed()
5 G' p* |1 \; S" H% d7 D是否可以暂时禁用约束并仍然删除?1 U3 M( }0 j7 n! ^
               
# t4 ?) }# v8 N2 P, c$ m6 S! j解决方案:
* n6 k! z0 P$ `/ {8 o                3 c# \; g$ ]' b5 Q4 Y

) w: F& J2 b  z" b0 P2 f, a% R% v8 n7 f4 ~6 w  t! n
                尝试DISABLE KEYS或% [8 [! f/ F) a4 u# |, I
SET FOREIGN_KEY_CHECKS=0;
, M" K2 }; ^* I9 @+ k' _确保% J8 }; D; q" p2 q8 `$ b
SET FOREIGN_KEY_CHECKS=1;/ w: d  ^' e) v4 n4 U* ]
后。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则