我有两张桌子,第一张有一些人的数据,第二张有一些代码。 我想要做的是设置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生成的。
答案 0 :(得分:0)
试试:
ALTER TABLE `MYBASE`.`first_table`
ADD FOREIGN KEY (`code_indentyfication`)
REFERENCES `MYBASE`.`second_table` (`codes`);