mysql外键约束

时间:2012-12-14 19:15:13

标签: mysql sql

我对mysql不太熟悉,当我尝试更新数据库时,它给出了以下错误:

  

无法添加或更新子行:外键约束失败(lhollowaConcert,CONSTRAINT Concert_ibfk_1 FOREIGN KEY(BandID)REFERENCES {{ 1}}(Bands))

我对自己的错误一无所知,有人能指出我正确的方向吗?

以下是我的一些内容(其余的会占用太多空间)。

BandID

3 个答案:

答案 0 :(得分:3)

错误告诉您在Concert表中存在BandId之前,您正试图将记录插入Bands表。

外键是两个表之间的约束。外键标识一个表中引用另一个表中的列的列。

由于您在ConcertBands表之间设置了外键,因此该记录必须存在于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表。