gpt4 book ai didi

MySQL 更新唯一约束

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

我有一个问题。我在 MySQL 中创建了一个带有主键和两个外键的表。两个外键 C 和 R 必须是唯一的。目前这有效。

但后来由于新的系统功能,我决定添加第三个键 CR_New。现在,C_ID、R_ID 和 CR_New 的组合必须是唯一的。但即使使用我在互联网上找到的解决方案,它也不起作用。删除外键时出现错误 1553。如果 CR_New 不同,则允许多次组合键 C_ID 和 R_ID。

CREATE TABLE CR(
CR_ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
CR_Grade TINYINT NOT NULL DEFAULT 0,
C_ID INT UNSIGNED NOT NULL,
R_ID INT UNSIGNED NOT NULL,
PRIMARY KEY(CR_ID),
FOREIGN KEY(C_ID) REFERENCES C(C_ID),
FOREIGN KEY(R_ID) REFERENCES R(R_ID),
CONSTRAINT UNIQUE(R_ID, C_ID));

ALTER TABLE CR ADD COLUMN CR_New INT;
UPDATE CR SET CR_New = 42;

ALTER TABLE CR ADD CONSTRAINT UNIQUE (C_ID, R_ID, CR_New);

ALTER TABLE CR DROP FOREIGN KEY C_ID;
ALTER TABLE CR DROP FOREIGN KEY R_ID;
ALTER TABLE CR DROP INDEX C_ID;
ALTER TABLE CR DROP INDEX R_ID;

如果你想知道我想从中得到什么用途:想象一下 C 是一个学生,R 是一个科目,CR_New 是新的一年,CR_Grade 是学生的成绩。现在只能保存某个科目的成绩,但我想扩展它以保存每年某个科目的成绩。

顺便说一句,这不是最初的用途,但工作方式相同。

最佳答案

现在我通过创建新表解决了问题。在用我的数据填充它们后,我将它们重命名,现在它可以工作了。对于测试数据库来说应该可以正常工作:-)

关于MySQL 更新唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39291745/

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