Você pode verificar o status do InnoDB (
SHOW ENGINE INNODB STATUS
) para determinar o motivo exato pelo qual as restrições estão falhando. A outra opção é adicionar as restrições de chave estrangeira após criar a tabela. No seu caso, parece que está faltando o tipo de motor. Os tipos de coluna também devem corresponder. As chaves primárias nas tabelas referenciadas são provavelmente
NOT NULL
, e eles não são assim em 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;