2017-07-26 117 views
0

事先道歉可能是重複的帖子 - 我在其他地方找不到我確切的問題。我正在學習一門SQL課程,並使用MySQL Workbench 6.3作爲我的沙箱。在我的課堂項目中,我正在創建「課程」,「教授」和「教授」表格。下面是前兩個,刪節:MySQL Workbench ::無法將第二個外鍵添加到現有表

// CREATE DATABASE `project1'... 
CREATE TABLE `courses` (`cid` int(11) NOT NULL, ...more... PRIMARY KEY (`cid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
CREATE TABLE `professors` (`ssn` int(11) NOT NULL, ...more... PRIMARY KEY (`ssn`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

的 「教」 表很簡單:

CREATE TABLE `teaches` (
    `cid` int(11) NOT NULL, 
    `ssn` int(11) NOT NULL, 
    PRIMARY KEY (`cid`,`ssn`), 
    KEY `ssn_idx` (`ssn`), 
    CONSTRAINT `ssn` FOREIGN KEY (`ssn`) REFERENCES `professors` (`ssn`) ON DELETE NO ACTION ON UPDATE NO ACTION 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

上述所有SQL是成功的。但我的問題是,「教」需要第二個外鍵回到「課程」。我本來以爲這會做到這一點:

ALTER TABLE `project1`.`teaches` 
ADD CONSTRAINT `cid` 
    FOREIGN KEY (`cid`) 
    REFERENCES `project1`.`courses` (`cid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION; 

但MySQL的討厭:

Operation failed: There was an error while applying the SQL script to the database. 
ERROR 1022: Can't write; duplicate key in table '#sql-1060_1b' 
SQL Statement: 
ALTER TABLE `project1`.`teaches` 
ADD CONSTRAINT `cid` 
    FOREIGN KEY (`cid`) 
    REFERENCES `project1`.`courses` (`cid`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION 

我感到困惑,因爲我有兩個外鍵關係的其他表,我不打這個問題與他們。 (是的,我克隆了他們的SQL創建語句,但沒有運氣。)該問題被描述爲「duplicate key in table '#sql-1060_1b'」,但我無法弄清楚#sql-1060-1b可能是什麼表。任何指導?

+0

這是SQL Server如何? –

+0

重命名你的鑰匙:) –

+0

@NorbertvanNobelen這樣做!男人,有時候是最簡單的事情......感謝一百萬人。 :) – Pete

回答

0

感謝Norbert van Nobelen解決了這個問題 - 將「Course」屬性從「cid」重命名爲「mycid」取得了訣竅。