簡體   English   中英

我無法在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

您必須將外鍵設置為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