我的表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)
任何帮助将不胜感激。谢谢
答案 0 :(得分:0)
user_name
中的uc_user_network
与user_name
中uc_users
的{{1}}类型与ID
中的uc_user_network
相同。那应该是什么类型的? int
或varchar(255)
?
答案 1 :(得分:0)
FOREIGN KEY (user_name) REFERENCES uc_users(user_name)
不是错误:你得到的实际错误是什么?
除非满足以下条件,否则您将无法创建外键:
依赖项必须已存在。在您的情况下,如果表uc_users
尚不存在,则无法定义引用它的外键。
引用的列必须包含primary key
(或者,取决于您的SQL实现是否支持它,备用密钥,例如{{1} }})。在您的情况下,如果表unique index
中的列user_name
不是主键,则无法将其作为主键引用。
此外,如果外部引用是由多列组成的组合键,则必须引用所有键列,其顺序与它们在主列中的定义顺序相同键。