我有一张看起来像这样的表:
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
我确信我遗漏了一些非常基本的东西。
答案 0 :(得分:5)
试试这个:
create table jobs (
id int,
user_id int,
FOREIGN KEY (user_id) REFERENCES Users(user_id)
) ENGINE=INNODB;
外键约束中的第一个user_id
是指定义约束的表,第二个是指它所指向的表。
因此,您在作业表中也需要一个字段user_id
。
答案 1 :(得分: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
答案 2 :(得分: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;
答案 3 :(得分: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)
);