所以我不明白为什么我不能在我的表中插入具有外部约束键的数据,甚至不能修改其中的任何内容....
以下是创建的表的示例。我试图在地址表中插入数据:
///////////////////////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)
)
知道我做错了吗?
谢谢我提前!!!
答案 0 :(得分:1)
这里的问题是,当您引用的条目(您引用的国家/地区)不存在时,您尝试插入引用表(地址)。那是什么触发了FOREIGN KEY CONSTRAINT异常。
首先尝试将某些国家/地区插入国家/地区表格,然后在您引用您在第一步中输入的国家/地区的位置插入一些地址。
关于你的第二个问题,这是你做出的选择。我可能会选择让用户有一个地址(用户表中的地址字段),但其中一些取决于数据的使用/更新方式。
如果您对关系数据库设计不熟悉,请快速浏览this resource。它涵盖(简要)主题,如关系类型,关键约束和普通表单。