3

複合キーと主キーを含むSQLテーブルの作成に問題があります。これは私が今持っているものです:

CREATE TABLE Racunar (
  IPAdresa char(15) PRIMARY KEY,
  CPU char(20),
  HD char(20)
);

CREATE TABLE Program (
  Naziv char(15),
  Verzija char(20),
  Datum char(11),
  PRIMARY KEY(Naziv, Verzija)
);

CREATE TABLE Operater (
  SifO int PRIMARY KEY,
  Ime char(20),
  BrTel char(20)
);

CREATE TABLE JeInstaliran (
  IPAdresa char(15) FOREIGN KEY REFERENCES Racunar(IPAdresa),
  SifO int FOREIGN KEY REFERENCES Operater(SifO),
  FOREIGN KEY(Naziv, Verzija) REFERENCES Program(Naziv, Verzija),
  DatumInstalacije char(11)
);

問題は最後の表のどこかにあります。SQL Fiddleを使用していますが、スキーマを構築しようとした後、次のエラーメッセージが返されました。

スキーマの作成に失敗しました:SQL構文にエラーがあります。2行目の「FOREIGNKEYREFERENCESRacunar(IPAdresa)、SifO int FOREIGN KEY REFERENCES Oper」の近くで使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください。

なぜこれがうまくいかないのかわかりませんので、助けていただければ幸いです。前もって感謝します。

4

1 に答える 1

0

構文が正しくありません。FOREIGN KEYを列とともに定義する代わりに、構文を使用して列定義の後に定義します。FOREIGN KEY (colname) REFERENCES tablename (foreign_colname)

CREATE TABLE JeInstaliran (
  IPAdresa char(15),
  SifO int,
  Naziv char(15),
  Verzija char(20),
  FOREIGN KEY (IPAdresa) REFERENCES Racunar(IPAdresa),
  FOREIGN KEY (SifO) REFERENCES Operater(SifO),
  FOREIGN KEY(Naziv, Verzija) REFERENCES Program(Naziv, Verzija),
  DatumInstalacije char(11)
);
于 2012-09-21T01:35:55.630 に答える