我table1
有3列:id varchar(20)
,name
,mother_id varchar(20)
。 mother_id
是指向同一表中id
列的外键。
这是我的表:
|id |name |mother_id|
|dog1 |my_dog | (null)
|dog2 |my_dog2 | dog1
|dog3 |my_dog3 | dog1
如果我尝试更新dog1
并更改dog4
,则会出现此错误:
Cannot delete or update a parent row: a foreign key constraint fails (`dogs`.`table1`, CONSTRAINT `FK_dogs1` FOREIGN KEY (`mother_id`) REFERENCES `accounts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE)
如何解决这个问题?我使用wamp 2.0 h
和Sqlyog
企业。
答案 0 :(得分:0)
您无法直接更改Primary key
值引用的Foreign key
值。
但有多种方法可以改变它:
删除外键约束和主键 - &gt; 更新值(PK和FK) - &gt; < / strong>然后再次添加主键和外键约束
alter table table1 drop foreign key thenameofFK;
alter table table1 drop primary key;
update table1
set id='dog4'
where id='dog1';
update table1
set mother_id='dog4'
where mother_id='dog1';
alter table table1 add primary key(id);
alter table table1
add constraint thenameofFK
foreign key(mother_id)
references table1(id);
请从问题中删除PHP标记,我没有看到任何与PHP相关的问题或内容。
答案 1 :(得分:0)
您必须在php myadmin中进行更改,删除外键约束和主键->更新值(PK和FK)->然后再次添加主键和外键约束