|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
[MySQL] Problema con una foreign key
Creo due tabelle in questo modo
Codice:
create table localita (
nome varchar(255) PRIMARY KEY
);
INSERT INTO localita VALUES ('Roma');
INSERT INTO localita VALUES ('Milano');
INSERT INTO localita VALUES ('Venezia');
create table zone (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
nome varchar(255),
localita varchar(255)
);
ALTER TABLE zone ADD CONSTRAINT FK_zone FOREIGN KEY (localita) REFERENCES localita(nome) ON UPDATE CASCADE;
INSERT INTO zone (nome,localita) VALUES ('Testaccio','Roma');
INSERT INTO zone (nome,localita) VALUES ('Trastevere','Roma');
INSERT INTO zone (nome,localita) VALUES ('EUR','Roma');
INSERT INTO zone (nome,localita) VALUES ('Fiera','Milano');
Altra anomalia è che se modifico il campo "localita" della tabella "zone" con un nome non presente nella tabella "localita", il db me lo lascia fare tranquillamente. In pratica è come se non avessi impostato la foreign key. Cosa mi sfugge? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
Una feature fondamentale di MySQL: non supporta l'integrità referenziale (a meno che tu non usi InnoDB o un altro Storage Engine)
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
ho dimenticato l'engine...Grazie. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2003
Messaggi: 1767
|
Altro problema, questa foreign key non mi da errore, come mai?
Codice:
create table sottocategorie ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, categoria varchar(255), nome varchar(255), descrizione text, KEY (categoria,nome) ) ENGINE=InnoDB; create table appartamenti ( codice varchar(20) PRIMARY KEY, categoria varchar(255) NOT NULL, sottocategoria varchar(255) NOT NULL, localita varchar(255), zona varchar(255) ) ENGINE=InnoDB; ALTER TABLE appartamenti ADD CONSTRAINT FK_app_sub FOREIGN KEY (sottocategoria) REFERENCES sottocategorie(nome) ON UPDATE CASCADE; |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2010
Città: Varese
Messaggi: 996
|
InnoDB supporta l'integrità referenziale? No lo chiedo perché sono rimasto indietro su quel ce... emh di Engine
Strano che MySQL non ti dia ne warning ne errori, ha un sistema di debug cosi sofisticato (ovviamente è ironico). Il problema è analogo al precedente? |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:12.












ho dimenticato l'engine...








