由于外键约束而无法INSERT - mysql

时间:2014-06-22 23:30:33

标签: mysql database foreign-keys foreign-key-relationship

所以我不明白为什么我不能在我的表中插入具有外部约束键的数据,甚至不能修改其中的任何内容....

以下是创建的表的示例。我试图在地址表中插入数据:

///////////////////////ADDRESSES TABLE ////////////////////////
CREATE TABLE IF NOT EXISTS addresses (
                id INT NOT NULL AUTO_INCREMENT,
                addressline1 VARCHAR(255) NOT NULL,
                addressline2 VARCHAR(255) NOT NULL,
                postcode VARCHAR(255) NOT NULL,
                phonenumber INT(13) NOT NULL,

                country_id INT NOT NULL,

                PRIMARY KEY (id),

                FOREIGN KEY (country_id) REFERENCES countries(id)

                  ON UPDATE CASCADE
                  ON DELETE RESTRICT

                ) ENGINE=InnoDB ";

///////////////////////COUNTRIES TABLE ////////////////////////
CREATE TABLE IF NOT EXISTS countries (
                id INT NOT NULL AUTO_INCREMENT,
                countryname VARCHAR(255) NOT NULL,

                PRIMARY KEY (id)

                )

知道我做错了吗?

谢谢我提前!!!

1 个答案:

答案 0 :(得分:1)

这里的问题是,当您引用的条目(您引用的国家/地区)不存在时,您尝试插入引用表(地址)。那是什么触发了FOREIGN KEY CONSTRAINT异常。

首先尝试将某些国家/地区插入国家/地区表格,然后在您引用您在第一步中输入的国家/地区的位置插入一些地址。

关于你的第二个问题,这是你做出的选择。我可能会选择让用户有一个地址(用户表中的地址字段),但其中一些取决于数据的使用/更新方式。

如果您对关系数据库设计不熟悉,请快速浏览this resource。它涵盖(简要)主题,如关系类型,关键约束和普通表单。