我对mysql不太熟悉,当我尝试更新数据库时,它给出了以下错误:
无法添加或更新子行:外键约束失败(
lhollowa
。Concert
,CONSTRAINTConcert_ibfk_1
FOREIGN KEY(BandID
)REFERENCES {{ 1}}(Bands
))
我对自己的错误一无所知,有人能指出我正确的方向吗?
以下是我的一些内容(其余的会占用太多空间)。
BandID
答案 0 :(得分:3)
错误告诉您在Concert
表中存在BandId
之前,您正试图将记录插入Bands
表。
外键是两个表之间的约束。外键标识一个表中引用另一个表中的列的列。
由于您在Concert
和Bands
表之间设置了外键,因此该记录必须存在于Bands
中,否则您将收到错误消息。因此,您必须先将标识为1111111
的乐队插入Bands
,然后才能为其创建音乐会记录。
请参阅显示工作版本的SQL Fiddle with Demo。
答案 1 :(得分:1)
您正在尝试使用concert
表格中找不到的bandid
插入或更新bands
表,或删除与其关联的音乐会的乐队。< / p>
这通常是因为你以错误的顺序进行操作;你必须确保数据在每一点都是一致的。
“以正确的顺序进行更新”还有另一种选择:您可以暂时关闭此类约束,以任何顺序进行更改,然后重新打开约束:
SET foreign_key_checks = 0;
-- update, insert whatever
SET foreign_key_checks = 1;
这并不意味着您避免保持数据的一致性,但这确实意味着您不必担心对dara进行更改的顺序。
答案 2 :(得分:0)
在插入Concert表之前,将乐队插入Bands表。