mysql - 我无法编辑另一个表在 mysql 中具有外键的表

标签 mysql sql foreign-keys

这是我在 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

关于mysql - 我无法编辑另一个表在 mysql 中具有外键的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28412773/

相关文章:

mysql - 哈希密码字段使用什么数据类型以及长度?

php - codeigniter 2 与原则 2 - 我可以将数据插入到表中,但无法取回数据

php - 计算每个成员名称在具有条件的表中出现的次数

java - Hibernate、JPA - 具有两个表的多对多示例

MySQL ERROR 1064 (42000) - 即使有反引号

php - 修复 Innodb Integrity 约束违规 : 1452

mysql - 如何在 mysql 5.6.16 中重命名分区名称

mysql - 获取mysql表中不存在的值

mysql - MySQL 中一个 FOREIGN 列的 PRIMARY 和 INDEX 键

MYSQL 创建带有外键的表产生错误