Sie können den Status von InnoDB überprüfen (SHOW ENGINE INNODB STATUS
), um den genauen Grund für das Fehlschlagen der Einschränkungen zu ermitteln. Die andere Option besteht darin, die Fremdschlüsseleinschränkungen nach dem Erstellen der Tabelle hinzuzufügen.
In Ihrem Fall scheint Ihnen der Motortyp zu fehlen. Auch die Spaltentypen müssen übereinstimmen. Die Primärschlüssel der referenzierten Tabellen sind höchstwahrscheinlich NOT NULL
, und sie sind es nicht in messaInScena
.
create table spazio
(
nome varchar(20) NOT NULL primary key,
indirizzo varchar(40) not null,
pianta varchar(20),
capienza smallint
) ENGINE=InnoDB;
create table spettacolo
(
titolo varchar(40) NOT NULL primary key,
descrizione LONGBLOB,
annoProduzione char(4)
) ENGINE=InnoDB;
create table messaInScena
(
data date,
ora time,
spazio varchar(20) NOT NULL,
spettacolo varchar(40) NOT NULL,
postiDisponibili smallint,
prezzoIntero decimal(5,2),
prezzoRidotto decimal(5,2),
prezzoStudenti decimal(5,2),
primary key (data, ora, spazio),
foreign key (spazio) references spazio(nome)
on update cascade on delete set null,
foreign key (spettacolo) references spettacolo(titolo)
on update cascade on delete set null,
constraint RA3_1 check (postiDisponibili >= 0)
) ENGINE=InnoDB;