gpt4 book ai didi

mysql - 使用外键和非键属性创建复合主键

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

这是我在创建批处理表后自动生成的代码。在向该表中插入数据时

  1. BatchID=1,Course_CourseID=1
  2. BatchID=1,Course_CourseID=2

它正在创建一个错误,指出“键‘BatchID_UNIQUE’的重复条目‘1’”。我正在使用 C# 2010 Express Windows 应用程序以及 MySQl 5.1

我的表架构在这里

CREATE TABLE `batch` (
`BatchID` int(11) NOT NULL,
`Course_CourseID` int(11) NOT NULL,
`NoOfStudents` int(11) DEFAULT NULL,
`ClassRoom` varchar(45) DEFAULT NULL,
`StartDate` varchar(45) DEFAULT NULL,
`Day` varchar(45) DEFAULT NULL,
`Time` varchar(45) DEFAULT NULL,
PRIMARY KEY (`BatchID`,`Course_CourseID`),
UNIQUE KEY `BatchID_UNIQUE` (`BatchID`),
KEY `fk_Batch_Course1` (`Course_CourseID`),
CONSTRAINT `fk_Batch_Course1` FOREIGN KEY (`Course_CourseID`)
REFERENCES `course` (`CourseID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

最佳答案

嗯,错误消息很清楚地指向了这个字符串:

UNIQUE KEY `BatchID_UNIQUE` (`BatchID`)

所以你要做的就是删除这个索引(用...

ALTER TABLE `batch` DROP INDEX `BatchID_UNIQUE`

... 命令,或者只是从表的定义中排除这一行(在 CREATE TABLE 中)。

假设您真的不需要您的批处理 ID 是唯一的(换句话说,您的 INSERT 语句中没有逻辑错误)。这似乎是这种情况,但:对 BatchID-Course_CourseID 已定义为唯一(通过 PRIMARY KEY)。

关于mysql - 使用外键和非键属性创建复合主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12341564/

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