MySQL – ON更新CASCADE foreign_key_checks = 0
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL – ON更新CASCADE foreign_key_checks = 0,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含998字,纯文字阅读大概需要2分钟。
内容图文
![MySQL – ON更新CASCADE foreign_key_checks = 0](/upload/InfoBanner/zyjiaocheng/902/164b9cc30071456ea51ebcf5b535ed45.jpg)
我正在开发一个工具来合并具有相同模式但不同数据的两个数据库.
部分原因是将所有外键更改为ON UPDATE CASCADE,然后递增所有主键以避免冲突并保持外键指针正常工作.
我的问题是,有时候有一些孤立的行有破坏的FK,所以跟着查询:
UPDATE table set pk = pk + 1000000
像这样失败:
错误1452(23000):无法添加或更新子行:外键约束失败…
(尽管我甚至没想过触摸外键列!)
我想通过以下方式解决这个问题:
Set foreign_key_checks=0
但是相关的外键不会更新.设置foreign_key_checks = 0后,我进行了快速测试并且级联不起作用.
有没有办法触发级联,或者在没有设置foreign_key_checks = 0的情况下执行FK损坏的行的更新? UPDATE IGNORE没有解决这个问题:(
解决方法:
您应该首先修复参照完整性.
>如果关系是合成类型,则删除孤立行
>否则将fk字段更新为null
之后,您的操作将正常运行.
附加信息:
如果列为NOT NULL,则表示关系为1 *.在这种情况下,您必须在父表中添加一个虚拟行(例如,“VIRTUAL PARENT”行),并将指向未显存父项的所有fks更新到此表.这将允许您稍后继续数据,并且还可以轻松地检索它们.
如果您认为1 *不是必需的(0 *对于您的技术/应用层来说已足够),那么只需将列设置为可为空即可.
内容总结
以上是互联网集市为您收集整理的MySQL – ON更新CASCADE foreign_key_checks = 0全部内容,希望文章能够帮你解决MySQL – ON更新CASCADE foreign_key_checks = 0所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。