简体   繁体   English

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

[英]I can't edit table that another table has a foreign key of it in mysql

This is my SQL code 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 and Table1_Addr are two tables that Table1_sal has two foreign keys to these two tables. Table1和Table1_Addr是两个表,Table1_sal具有指向这两个表的两个外键。

My problem is that I can't change id field of Table1 and addid field of Table1_Addr 我的问题是我无法更改Table1的id字段和Table1_Addr的addid字段

The error is: 错误是:

#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`))


Edited-The answer is: 编辑-答案是:

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
)

Add ON UPATE CASCADE after your foreign keys definitions 在外键定义之后添加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

You have to set the foreign key to On Update cascade.Then all child rows will also be updated 您必须将外键设置为On Update级联,然后所有子行也将被更新

     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
)

您无法更改Table1和Table1_Addr的主键(即Table1_Addr的外键)的问题是关系数据库的正常行为,例如MySQL,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM