2012-09-09 238 views
2

這是創建批表後自動生成的代碼。同時插入數據到該表使用外鍵和非鍵屬性創建複合主鍵

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

它正在創建一個錯誤說「重複條目 '1' 爲鍵「 BatchID_UNIQUE'」。 我使用C#2010速成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; 

回答

1

好了,錯誤信息很清楚是指這個字符串:

UNIQUE KEY `BatchID_UNIQUE` (`BatchID`) 

所以你要做的是要麼刪除這個指數(...

ALTER TABLE `batch` DROP INDEX `BatchID_UNIQUE` 

...命令,或者只是從表的定義中排除此行(在CREATE TABLE中)。

所有這些假設你真的不需要你的批處理id是唯一的(換句話說,在你的INSERT聲明中沒有邏輯錯誤,但似乎是這樣的:雖然:BatchID-Course_CourseID已被定義爲唯一的(通過主鍵)。

+0

好的答案,但她可能還沒有很好地理解它 – Sami

+0

非常感謝raina77ow – Jiya

0

嘗試這種方式。放下你的批處理表,然後運行該SQL。不管正確回答,你不能有兩個相同的vaues一個獨特的密鑰,所以我刪除了獨特的鍵線以及

CREATE TABLE IF NOT EXISTS `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`), 
    KEY `Course_CourseID` (`Course_CourseID`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

ALTER TABLE `batch` ADD CONSTRAINT `batch_ibfk_2` FOREIGN KEY (`Course_CourseID`) 
REFERENCES `course` (`CourseId`) ON DELETE NO ACTION ON UPDATE NO ACTION; 
+0

Thaks很多sami ... – Jiya

+0

不客氣。謝謝,這裏意味着接受解決方案:) – Sami