错误:违反外键约束 - 删除父行
尝试删除作业记录(例如,DELETE FROM jobs WHERE job_id = 1 LIMIT 1;
)会导致错误#1451:“无法删除或更新父行:外键约束失败”。发生这种情况是因为 advertisers
表有一个外键引用 jobs
表的 advertiser_id
.
数据库架构:
数据库包含以下表格:
advertisers
:
advertiser_id
(主键)name
、password
、email
、address
、phone
、fax
、session_token
advertisers_ibfk_1
引用 jobs.advertiser_id
jobs
:
job_id
(主键)advertiser_id
(外键)name
、shortdesc
、longdesc
、address
、time_added
、active
、moderated
解决方案:暂时停用外键约束
解决方案涉及暂时禁用外键检查以允许删除,然后重新启用它们以保持数据完整性:
<code class="language-sql">SET FOREIGN_KEY_CHECKS = 0; -- Disable foreign key checks DELETE FROM `jobs` WHERE `job_id` = 1 LIMIT 1; -- Delete the problematic job record SET FOREIGN_KEY_CHECKS = 1; -- Re-enable foreign key checks</code>
此方法允许删除,同时保持整个数据库的引用完整性。 请记住仔细考虑禁用外键检查的影响,并且仅在绝对必要时才使用此方法。
以上是为什么无法删除作业记录:违反外键约束?的详细内容。更多信息请关注PHP中文网其他相关文章!