-1
私はSQLを初めて使い、劇場の予約システムのDBを作成しようとしています。しかし、次の表を作成するとエラーが発生します。複数のテーブルを参照する外部キーのエラー
CREATE TABLE Booking (
Email VARCHAR(255) NOT NULL,
PerfDate DATE,
PerfTime TIME,
RowNumber CHAR(3),
FOREIGN KEY (PerfDate, PerfTime) REFERENCES Performance (PerfDate, PerfTime),
FOREIGN KEY RowNumber REFERENCES Seat (RowNumber),
);
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-01',TIME '19:00:00','Z18');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-01',TIME '19:00:00','Z19');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-01',TIME '19:00:00','Z16');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-05',TIME '13:00:00','U20');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-05',TIME '13:00:00','U19');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-05',TIME '13:00:00','X13');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-05',TIME '13:00:00','X14');
INSERT INTO Booking VALUES ('[email protected]',DATE '2017-11-05',TIME '13:00:00','Z19');
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES Seat (RowNumber),
)' at line 7
FKsを間違って設定していますか?
、ラインFOREIGN KEY RowNumber関数リファレンスシート(RowNumber関数)で、[カンマ]、文字を削除 "" 中 "REFERENCESシート(RowNumber関数)、" あまり...エラーはかなりですしてくださいこの文の構文もここで確認してください。https://www.w3schools.com/sql/sql_foreignkey.asp btw:主キーを追加しないでください。 – Hansa
私はカンマを削除しようとし、同じエラーが発生しました。私たちに与えられたリレーショナル・スキーマによれば、主キーはPerfDate、PerfTime、RowNumberでなければなりません。 FKを次のように定義することはできますか。 FOREIGN KEY(PerfDate、PerfTime、RowNumber)関連項目パフォーマンス(PerfDate、PerfTime)、シート(RowNumber)、 は1つのステートメントではなく1つのステートメントにありますか?それは単一の複合外部キーであるはずです。 –
おそらくfkの名前の周りの()が必要ですか? 「FOREIGN KEY(RowNumber)REFERENCES」は、この回答との唯一の違いのようです: https://stackoverflow.com/questions/9114274/how-do-i-create-a-table-with-a-two-primary -keys-of-two-foreign-keys – Hansa