我无法编辑 table 另一个 table 在 mysql 中有它的外键
I can't edit table that another table has a foreign key of it in mysql
这是我在 MySQL 中的 SQL 代码:
create table Table1
(
id varchar(2),
name varchar(2),
PRIMARY KEY (id)
);
Create table Table1_Addr
(
addid varchar(2),
Address varchar(2),
PRIMARY KEY (addid)
);
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
FOREIGN KEY (id) REFERENCES Table1(id)
)
Table1 和 Table1_Addr 是两个表,Table1_sal 有这两个表的两个外键。
我的问题是我无法更改 Table1 的 id 字段和 Table1_Addr
的 addid 字段
错误是:
#1451 - Cannot delete or update a parent row: a foreign key constraint
fails (`avl`.`table1_sal`, CONSTRAINT `table1_sal_ibfk_2` FOREIGN KEY (`id`)
REFERENCES `table1` (`id`))
编辑-答案是:
create table Table1
(
id varchar(2),
name varchar(2),
PRIMARY KEY (id)
);
Create table Table1_Addr
(
addid varchar(2),
Address varchar(2),
PRIMARY KEY (addid)
);
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid)ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (id) REFERENCES Table1(id)ON UPDATE CASCADE ON DELETE CASCADE
)
在您的外键定义后添加 ON UPATE CASCADE
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (id) REFERENCES Table1(id) ON UPDATE CASCADE ON DELETE CASCADE
您无法更改 Table1 和 Table1_Addr 的主键的问题,作为 Table1_Addr 的外键,是关系数据库的正常行为,例如 MySQL、
您必须将外键设置为“更新时”cascade.Then所有子行也将被更新
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid)
On delete cascade On Update cascade ,
FOREIGN KEY (id) REFERENCES Table1(id)
On delete cascade On Update cascade
)
这是我在 MySQL 中的 SQL 代码:
create table Table1
(
id varchar(2),
name varchar(2),
PRIMARY KEY (id)
);
Create table Table1_Addr
(
addid varchar(2),
Address varchar(2),
PRIMARY KEY (addid)
);
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid),
FOREIGN KEY (id) REFERENCES Table1(id)
)
Table1 和 Table1_Addr 是两个表,Table1_sal 有这两个表的两个外键。
我的问题是我无法更改 Table1 的 id 字段和 Table1_Addr
的 addid 字段错误是:
#1451 - Cannot delete or update a parent row: a foreign key constraint
fails (`avl`.`table1_sal`, CONSTRAINT `table1_sal_ibfk_2` FOREIGN KEY (`id`)
REFERENCES `table1` (`id`))
编辑-答案是:
create table Table1
(
id varchar(2),
name varchar(2),
PRIMARY KEY (id)
);
Create table Table1_Addr
(
addid varchar(2),
Address varchar(2),
PRIMARY KEY (addid)
);
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid)ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (id) REFERENCES Table1(id)ON UPDATE CASCADE ON DELETE CASCADE
)
在您的外键定义后添加 ON UPATE CASCADE
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid) ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (id) REFERENCES Table1(id) ON UPDATE CASCADE ON DELETE CASCADE
您无法更改 Table1 和 Table1_Addr 的主键的问题,作为 Table1_Addr 的外键,是关系数据库的正常行为,例如 MySQL、
您必须将外键设置为“更新时”cascade.Then所有子行也将被更新
Create table Table1_sal
(
salid varchar(2),
addid varchar(2),
id varchar(2),
PRIMARY KEY (salid),
index(addid),
index(id),
FOREIGN KEY (addid) REFERENCES Table1_Addr(addid)
On delete cascade On Update cascade ,
FOREIGN KEY (id) REFERENCES Table1(id)
On delete cascade On Update cascade
)