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;

外部キー制約の 1 つ目user_idは制約が定義されているテーブルを参照し、2 つ目はそれが指しているテーブルを参照します。user_idしたがって、jobs テーブルにもフィールドが必要です。

于 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 に答える