在一个 table - MySql 中添加第二个外键

adding 2nd foreign keys in one table - MySql

我想在我现有的 table 'tbl_subcaste' 上添加第二个外键,它已经有一个 'fk caste caste_id' ass如下所示:

现在我想在此 table 上添加另一个“fk 宗教 religion_id”,如下所示:

但是MySql在这样做之后给我这个错误:

ALTER TABLE `tbl_subcaste` 
ADD  CONSTRAINT `fk religion religion_id` 
FOREIGN KEY (`religion_id`) REFERE `sanskrut`.`tbl_religion`(`religion_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

错误:#1022 - 无法写入; table '#sql-534_f7'

中的重复键

我不明白,为什么这不允许我添加另一个 kf?

好像外键名已经存在了,改一下试试下面-

ALTER TABLE `tbl_subcaste` 
ADD  CONSTRAINT `fk religion religion_id100` 
FOREIGN KEY (`religion_id`) REFERE `sanskrut`.`tbl_religion`(`religion_id`)
ON DELETE NO ACTION ON UPDATE CASCADE;

即使您也应该遵循一个标准来避免这个问题,因为您可以将名称保留为 "fk_tablename_columnname"。

此外,您可以使用以下查询来获取所有键名和其他有用信息。

SELECT constraint_Schema AS mydb, table_name AS child_table,constraint_name AS foreign_key_name, referenced_table_name AS master_table 
FROM information_Schema.REFERENTIAL_CONSTRAINTS 
WHERE constraint_Schema='mydb' AND table_name='mytable';

我认为您错过了语法 "REFERENCES"。试试下面的查询

ALTER TABLE tbl_subcaste  
ADD CONSTRAINT `f.k` FOREIGN KEY (`religion_id`) REFERENCES sanskrut.tbl_religion(`religion_id`) ON UPDATE CASCADE ON DELETE NO ACTION;