-1
私のコードを読み取ります奇妙な構文エラー、次のように6.3
CREATE DATABASE IF NOT EXISTS store;
CREATE TABLE IF NOT EXISTS customer (
customer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
first_name VARCHAR(20) NOT NULL,
middle_name VARCHAR(20),
last_name VARCHAR(40) NOT NULL,
email VARCHAR(60) NOT NULL,
usr_pword CHAR(10) NOT NULL,
reg_date DATE,
PRIMARY KEY (customer_id),
FOREIGN KEY (rental_id) REFERENCES (rental_id),
UNIQUE (email)
);
CREATE TABLE IF NOT EXISTS rental (
rental_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
date_out DATE NOT NULL,
date_in DATE NOT NULL,
cost INTEGER NOT NULL,
PRIMARY KEY (rental_id),
FOREIGN KEY (customer_id) REFERENCES (customer_id),
FOREIGN KEY (game_id) REFERENCES (game_id)
);
CREATE TABLE IF NOT EXISTS game (
game_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
game_name VARCHAR(60),
game_publisher VARCHAR(20),
PRIMARY KEY (game_id),
FOREIGN KEY (rental_id) REFERENCES (rental_id)
);
を、私はエラーを取得:あなたのSQL構文でエラーが発生している エラーコード1064 ...近くには、「UNIQUE(メールをrental_id )); '
ドキュメントを読まなくても、外部キー制約にテーブル名が必要であることは明らかです。 FKの全体のポイントは、別のテーブルに関連することであり、どのテーブルを知る必要があります。 – Barmar
@Barmar、そうですが、DBMSが明白な事例を知り、正しいことをすると期待するのは妥当かもしれません。この場合、 'rental_id'と呼ばれる主キーを持つテーブルが1つだけあります。もう1つの例は、JOINクエリの列が明白である場合は、テーブル名で修飾する必要がないということです。また、(MySQLはこのオプションをサポートしていませんが)SQLの外部キーは、参照される列名がFK列名と同じであれば省略することがあります。 –
ありがとう、しかし、私はそれを行うとき、私は私が言及しているキーを持っていないと主張するエラーを得るが、私は、あなたはなぜ知っているだろうか? (私のコードの唯一の変更は、外部キー参照の前にテーブル名を持っています) – Harvey