gpt4 book ai didi

mysql - 如何更新具有 FK 约束的字段的大小写

转载 作者:行者123 更新时间:2023-11-29 07:33:10 24 4
gpt4 key购买 nike

我希望标准化数据库中的字段。如果该字段具有 FK 约束,我将如何执行以下操作:

在 Django 中:

Platform.objects.filter(name='ITUNES').update(name='iTunes')
# gives FK error

在mysql中:

update main_platform set name='iTunes' where name='ITUNES'
# Cannot delete or update a parent row: a foreign key constraint fails (`avails`.`main_credit`, CONSTRAINT `main_credit_ibfk_3` FOREIGN KEY (`platform_id`) REFERENCES `main_platform` (`name`))

解决这个问题的方法是什么?

请注意,我不想添加其他字段,例如 ID 字段,其中 FK 永远不会更改,我只对更新现有字段感兴趣。

我的平台当前表格是:

CREATE TABLE `main_platform` (
`name` varchar(20) NOT NULL,
`guid` varchar(40) DEFAULT NULL,
PRIMARY KEY (`name`),
KEY `guid` (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最佳答案

这看起来更像是一个 SQL 问题。

您将 name 作为主键,因此,如果您尝试在链接表中存在引用它的行时直接更新它,那么事情肯定会崩溃。

如果您不打算修改表以使用数字 id 作为主键(这将是一个非常好的主意),那么我能看到的最好的实际选择是添加一个新行main_platform 使用新名称字段(iTunes 与 ITUNES),然后迁移所有相关数据以指向该新行,最后删除旧行。

参见this回答以更深入地了解问题,并希望被说服并使用数字 id 作为主键。

关于mysql - 如何更新具有 FK 约束的字段的大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31883777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com