有人可以帮我解决tuhis问题吗?
CREATE TABLE PATOLOGIE(
id_patologia int PRIMARY KEY AUTO_INCREMENT,
nome varchar(40) NOT NULL
)ENGINE= InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE RICOVERO(
paziente int NOT NULL,
reparto int NOT NULL,
dataora_inizio datetime NOT NULL,
dataora_fine datetime ,
esito tinyint,
score double,
colore tinyint,
dataora_obi datetime,
dataora_triage datetime,
PRIMARY KEY(reparto, dataora_inizio, paziente),
FOREIGN KEY (reparto) REFERENCES REPARTI (id_reparto),
FOREIGN KEY (paziente) REFERENCES ANAGRAFICA (id)
)ENGINE =InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE RICOVERO_PATOLOGIE(
paziente int NOT NULL,
reparto int NOT NULL,
dataora_inizio datetime NOT NULL,
patologia int NOT NULL,
data_patologia date NOT NULL,
FOREIGN KEY (patologia) REFERENCES PATOLOGIE (id_patologia),
PRIMARY KEY (paziente, reparto, dataora_inizio, patologia)
)ENGINE =InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE RICOVERO_PATOLOGIE
ADD CONSTRAINT fk_r
FOREIGN KEY (paziente, dataora_inizio, reparto) REFERENCES RICOVERO (paziente, dataora_inizio, reparto)
ON UPDATE CASCADE
ON DELETE CASCADE;
答案 0 :(得分:0)
ALTER TABLE
语句中的列顺序错误。更改:
FOREIGN KEY (paziente, dataora_inizio, reparto)
REFERENCES RICOVERO (paziente, dataora_inizio, reparto)
收件人:
FOREIGN KEY (reparto, dataora_inizio, paziente)
REFERENCES RICOVERO (reparto, dataora_inizio, paziente)
定义外键时,列顺序很重要。