-1

问题出在哪里?我正在尝试使用 Episodi 表中的组合主键创建表比较,但应该有一个我看不到的问题.. 表中的主键是“numero”和“titolo_episodio”的组合

create table Autori(
  id_autore int auto_increment primary key,
  nome varchar(15) not null,
  cognome varchar(15) not null,
  nome_arte varchar (15)
 ) ENGINE=InnoDB;

 create table Serie(
  nome varchar(25) primary key,
  id_autore int(6),
descrizione varchar(400),
  FOREIGN KEY (id_autore)REFERENCES Autori(id_autore)
  ) ENGINE=InnoDB;

 create table Episodi(
  titolo_episodio varchar(25) not null,
numero int not null,
  durata time not null,
  data_trasmissione date not null,
  nome_serie varchar(25),
PRIMARY KEY(titolo_episodio,numero),
  FOREIGN KEY (nome_serie)REFERENCES Serie(nome)
  ) ENGINE=InnoDB;

  create table Personaggi(
  id_pers int auto_increment primary key,
  nome varchar(15) not null,
  cognome varchar(15),
  nazionalita varchar (15),
  nome_serie varchar(25),
   FOREIGN KEY (nome_serie)REFERENCES Serie(nome)
  ) ENGINE=InnoDB;

create table Utenti(
nickname varchar(15) primary key,
nazionalita varchar(15) not null,
mail varchar(25) not null,
pwd varchar(15) not null,
amministratore bool default 0 not null
) ENGINE=InnoDB;

create table Generi(
  genere varchar(15) primary key
 ) ENGINE=InnoDB;

 create table comparein(
  id_pers int not null,
  numero int not null,
titolo_episodio varchar(25),
 FOREIGN KEY (id_pers)REFERENCES Personaggi(id_pers),
 FOREIGN KEY (numero,titolo_episodio)REFERENCES Episodi(numero,titolo_episodio),
 primary key(id_pers,numero,titolo_episodio)
  ) ENGINE=InnoDB;
4

1 回答 1

2

我认为您需要以与定义主键相同的顺序引用 PK 列。所以而不是

FOREIGN KEY (numero,titolo_episodio)REFERENCES Episodi(numero,titolo_episodio)

利用

FOREIGN KEY (titolo_episodio, numero) REFERENCES Episodi(titolo_episodio, numero)

SQLFiddle:http ://sqlfiddle.com/#!2/363bd

于 2013-06-03T15:07:53.747 回答