6

我有一个看起来像这样的表:

mysql>  SHOW COLUMNS FROM Users;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| user_id    | int(10)      | NO   | PRI | NULL    | auto_increment |
| username   | varchar(50)  | YES  |     | NULL    |                |
| password   | varchar(255) | YES  |     | NULL    |                |
| email      | varchar(255) | YES  |     | NULL    |                |
| phone      | varchar(255) | YES  |     | NULL    |                |

我正在尝试创建一个这样的新表:

create table jobs (id int,  FOREIGN KEY (user_id) REFERENCES Users(user_id)) ENGINE=INNODB;

但我收到此错误:

ERROR 1072 (42000): Key column 'user_id' doesn't exist in table

我确信我错过了一些非常基本的东西。

4

4 回答 4

6

试试这个:

create table jobs (
    id int,  
    user_id int,
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
) ENGINE=INNODB;

外键约束中的第一个user_id是指定义约束的表,第二个是指它指向的表。因此,您的工作表中也需要一个字段user_id

于 2012-06-30T23:18:09.157 回答
3

这是您需要的脚本:

CREATE TABLE jobs
(
    id int NOT NULL,
    user_id int NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (user_id) REFERENCES Users(user_id)
)

这是学习有关设置关系的基础知识的一个很好的参考:SQL FOREIGN KEY Constraint

于 2012-06-30T23:18:02.183 回答
0

您正在尝试将其定义为 FOREIGN KEY,即查询中不存在的列。

这就是你收到的原因Key column 'user_id' doesn't exist in table

观察您的查询:

 create table jobs (
 id int,
 FOREIGN KEY (user_id) REFERENCES Users(user_id)
) ENGINE=INNODB;

正如其他答案所示:

您必须定义新表列的创建,这将是另一个表中 PK 的 FK

 create table jobs (
 id int,
 user_id int NOT NULL
 FOREIGN KEY (user_id) REFERENCES Users(user_id)
 ) ENGINE=INNODB;
于 2019-03-11T20:05:22.313 回答
0

创建表考勤:

CREATE TABLE tbl_attendance
(
attendence_id INT(100) NOT NULL,
presence varchar(100) NOT NULL,
reason_id varchar(100) NULL,
PRIMARY KEY (attendance_id)
);
于 2020-07-29T14:52:05.173 回答