2013-11-02 134 views
0

我得到了兩個表格,第一個是一些人的數據,第二個是一些代碼。 我想要做的就是設置FK,使數據庫檢查新人員數據是否包含第二個表中列表中的「代碼」。兩個表都在代碼欄上有PK,但我仍然收到錯誤。SQL外鍵添加問題

ERROR 1215: Cannot add foreign key constraint 

SQL Statement: 

ALTER TABLE `MYBASE`.`first_table` 

ADD CONSTRAINT `fk_new_fkey` 

    FOREIGN KEY (`code_indentyfication`) 

    REFERENCES `MYBASE`.`second_table` (`codes`) 

    ON DELETE NO ACTION 

    ON UPDATE NO ACTION 



ERROR: Error when running failback script. Details follow. 



ERROR 1050: Table 'first_table' already exists 

SQL Statement: 

CREATE TABLE `first_table` (

    `id` int(11) NOT NULL AUTO_INCREMENT, 

    `code_indentyfication` varchar(2) COLLATE utf8_polish_ci NOT NULL, 

    `number_identyfication` varchar(45) COLLATE utf8_polish_ci NOT NULL, 

    `name` varchar(45) COLLATE utf8_polish_ci DEFAULT NULL, 

    `surname` varchar(45) COLLATE utf8_polish_ci DEFAULT NULL, 

    `adress` varchar(45) COLLATE utf8_polish_ci DEFAULT NULL, 



    PRIMARY KEY (`id`,`code_indentyfication`) 

) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci 

代碼是varchar(2),我想設置FK而不對列集進行任何更改。 有什麼建議嗎? 我正在使用MySQL服務器,這個代碼是由MySQL Workbench生成的,如果有幫助的話。

回答

0

試一下:

ALTER TABLE `MYBASE`.`first_table` 
ADD FOREIGN KEY (`code_indentyfication`) 
    REFERENCES `MYBASE`.`second_table` (`codes`);