2016-03-03 63 views
0

所以我有3个表:共享主键的多个表

口袋妖怪:

+---------------+-------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+---------------+-------------+------+-----+---------+-------+ 
| National_ID | int(11)  | NO | PRI | NULL |  | 
| Picture  | longblob | YES |  | NULL |  | 
| Name   | varchar(15) | NO |  | NULL |  | 
| Generation_ID | int(11)  | NO |  | NULL |  | 
| Type1   | varchar(8) | NO |  | NULL |  | 
| Type2   | varchar(8) | YES |  | NULL |  | 
+---------------+-------------+------+-----+---------+-------+ 

统计:

+-----------------+-------------+------+-----+---------+-------+ 
| Field   | Type  | Null | Key | Default | Extra | 
+-----------------+-------------+------+-----+---------+-------+ 
| National_ID  | int(11)  | NO | PRI | NULL |  | 
| Health_Points | int(11)  | NO |  | NULL |  | 
| Attack   | int(11)  | NO |  | NULL |  | 
| Defense   | int(11)  | NO |  | NULL |  | 
| Special_Attack | int(11)  | NO |  | NULL |  | 
| Special_Defense | int(11)  | NO |  | NULL |  | 
| Speed   | int(11)  | NO |  | NULL |  | 
| Ability1  | varchar(20) | NO |  | NULL |  | 
| Ability2  | varchar(20) | YES |  | NULL |  | 
+-----------------+-------------+------+-----+---------+-------+ 

其他:

+--------------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+--------------+-------------+------+-----+---------+-------+ 
| National_ID | int(11)  | NO | PRI | NULL |  | 
| Evolves_From | varchar(15) | YES |  | NULL |  | 
| Species  | varchar(20) | NO |  | NULL |  | 
| Height_inch | int(11)  | NO |  | NULL |  | 
| Weight_lbs | int(11)  | NO |  | NULL |  | 
| Capture_Rate | int(11)  | NO |  | NULL |  | 
+--------------+-------------+------+-----+---------+-------+ 

我的问题是, Stats表中的National_ID指向th e口袋妖怪表中的National_ID,但我无法对杂项表做同样的处理。

每当我尝试在Misc中添加一个外键指向口袋妖怪表时,我得到一个重复错误。请帮助!谢谢

+0

杂项表是否有任何外键约束? –

+0

不,在此查询之后“ALTER TABLE Misc ADD CONSTRAINT FK_National_ID FOREIGN KEY(National_ID)REFERENCES Pokemon(National_ID);”我会收到重复错误。 –

+1

请指定您希望表格如何相互关联。忘记“外键”等等。只是解释你希望表格如何相互关联。使用当前列将是有用的 –

回答

0

从错误消息,它看起来像你已经有一个外部约束的名称'FK_National_ID'。尝试将其更改为'FK_Pokemon_National_ID'或其他东西,它应该工作。

这里是SQL Fiddle

0

每个FOREIGN KEY声明一个表&列名列表REFERENCES一个表&列名列表需要一个唯一的名字。 (如果你没有明确给出,那么DBMS将创建一个。)