SQL外键添加问题

时间:2013-11-02 18:23:03

标签: mysql sql foreign-keys

我有两张桌子,第一张有一些人的数据,第二张有一些代码。 我想要做的是设置FK以使DB检查新人员数据是否包含来自第二个表的列表中的“代码”。两个表在代码列上都有PK,但我仍然收到错误。

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生成的。

1 个答案:

答案 0 :(得分:0)

试试:

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