2017-09-07 62 views
1

我创建了一个简单的用户表,它具有用户标识和用户名(唯一)。无法创建简单外键约束 - 形成不正确

创建另一个表单元,这个表包含cratedby我想在用户表中记录用户名。我创建了一个外键字段。在用户中使用用户名创建。它完成没有任何问题。

现在我创建了另一个表customers1,它也有一个字段cratedby(用户名之一)。当我建立外键关系时抛出一个错误 - 外键常量被错误地形成。

表中没有任何数据。为什么它的单位表不在customers1表中。我正在上传3张图片。

请帮助...我读过类似的问题,尝试了几个选项,但没有奏效。 3 Tables, HeidiSQL

+0

这是一个常见问题解答。请标记你的SQL。阅读其官方文档和谷歌许多不同的错误/问题/问题/ desiderata不同的措辞,不只是'几个'。用户表中的用户名可以为空?请阅读并在[mcve]上采取行动。请[使用文字表格,而不是图片和链接](https://meta.stackoverflow.com/a/285557/3404097)。 – philipxy

回答

0

首先,不要使用用户名作为主键,而要使用userid,因为用户名可能类似。

第二个FOREIGN KEY是一个表中引用另一个表中PRIMARY KEY的字段(或字段集合)。在你的表中,userid是主键(带有黄色键图标),而不是用户名。

如果您可以使用控制台,请改用它。并执行以下操作:

-> CREATE TABLE USERS(USERID INT PRIMARY KEY AUTO_INCREMENT, USERNAME VARCHAR(30)); 
-> CREATE TABLE UNIT (UNITID INT PRIMARY KEY, USERID INT,FOREIGN KEY (USERID) REFERENCES USERS (USERID)); 
-> CREATE TABLE CUSTOMER (CUSTOMERID INT PRIMARY KEY, USERID INT, FOREIGN KEY (USERID) REFERENCES USERS (USERID)); 
+0

问题解决了,谢谢你的建议。 – kpkdhar22

+0

然后请标记为已回答。 –