使用另一个表错误的外键创建表

时间:2014-02-28 17:32:44

标签: sql foreign-keys

我的表uc_users包含以下列:

| id | user_name | display_name | password | email |

我想使用uc_users表中的外键user_name创建第二个表uc_user_network。

这是我的尝试:

CREATE TABLE uc_user_network
(
ID int NOT NULL AUTO_INCREMENT,  
GraphName varchar(255) NOT NULL,
user_name varchar(50),     
networkid varchar(255),
PRIMARY KEY (ID)
FOREIGN KEY (user_name) REFERENCES uc_users(user_name) 
) 

ALTER TABLE uc_users
    ADD CONSTRAINT fk_users
    FOREIGN KEY (user_name)
    REFERENCES uc_user_network(ID)

但是,我收到以下错误:

FOREIGN KEY (user_name) REFERENCES uc_users(user_name)

任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:0)

user_name中的uc_user_networkuser_nameuc_users的{​​{1}}类型与ID中的uc_user_network相同。那应该是什么类型的? intvarchar(255)

答案 1 :(得分:0)

FOREIGN KEY (user_name) REFERENCES uc_users(user_name)不是错误:你得到的实际错误是什么?

除非满足以下条件,否则您将无法创建外键:

  1. 依赖项必须已存在。在您的情况下,如果表uc_users尚不存在,则无法定义引用它的外键。

  2. 引用的列必须包含primary key(或者,取决于您的SQL实现是否支持它,备用密钥,例如{{1} }})。在您的情况下,如果表unique index中的列user_name不是主键,则无法将其作为主键引用。

  3. 此外,如果外部引用是由多列组成的组合键,则必须引用所有键列,其顺序与它们在主列中的定义顺序相同键。