![](/img/trans.png)
[英]How to update primary key of parent table that will automatically update child table foreign key in hibernate?
[英]update table with primary key , which is used as foreign key in many child tables
我想通过Java更新表(使用mysql)。
I have a Test table with structure
id(pk) name address
还有另一张桌子
Practice with following structure
p_id id(fk) branch
现在我想更新测试表,但是根据外键约束,我将得到
“无法删除或更新父行:外键约束失败
”,因为它也在子表中使用。因此,如果我想更新它,如何仍然可以更新我的测试表?
我正在尝试这种方式。
UPDATE Test SET Test.id=1,NAME='XYZ'
因此,我是否需要删除外键约束,然后根据需要更新表并再次重新应用这些约束?
在这种情况下应如何更新我的测试表?
我认为您正在尝试做的是:
UPDATE Test SET NAME='XYZ' WHERE id = 1
如果您执行了UPDATE Test SET id=1, Name = 'XYZ'
,则您将尝试将每个测试记录设置为id=1
, Name = 'XYZ'
。
该查询无疑会失败,因为您不能有多个id=1
行。
如果您有一个id=3
的测试记录,并且有一个引用该测试记录的练习记录,并且您的SQL命令现在尝试将所有的id更改为1,则将发生外键约束失败。
因此,外键约束失败。
您确定您具有正确的SQL查询吗?
从您的语句,UPDATE Test SET Test.id=1,NAME='XYZ'
,我基本上了解到的是,您正在尝试同时更新主键以及数据。
如果您要执行上述操作,建议您执行以下操作。
ALGO:
步骤1:使用新的PK添加新记录
步骤2:用新的PK更新孩子
步骤3:删除旧记录。
insert into test(id,name,address) values(5,'name','address');
--where 5 is your new PK.
--Updating the child table
update practice set p_id=5 where p_id=1
--where 1 is your old id in Test.
--delete the record
delete from test where id=1
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.