Ciao a tutti.
Ho notato una cosa piuttosto spiacevole di MySQL. Io possiedo attualmente la versione 5 (che è una alpha), ma questo problema l'ho riscontrato un po' con tutte le versioni dalla 3 in avanti.
Ecco il problema: MySQL ignora completamente il vincolo di chiave esterna! Qualcuno sa se questo è un bug non ancora corretto o qualcos'altro?
Questo è un semplice esempio di creazione di due tabelle:
codice:
CREATE TABLE t1(
id INT NOT NULL,
dsc VARCHAR(30),
PRIMARY KEY(id)
);
CREATE TABLE t2(
id2 INT NOT NULL,
idfk INT NOT NULL,
PRIMARY KEY(id2),
FOREIGN KEY(idfk) REFERENCES t1(id)
);
Inserisco dei dati:
codice:
INSERT INTO t1 VALUES('0', 'Ciao');
INSERT INTO t1 VALUES('1', 'Hello');
Ed il brutto è che mi lascia anche inserire questa tupla:
codice:
INSERT INTO t2 VALUES('0', '7');
Cosa che a me non stà bene: ho definito un vincolo di chiave esterna, vorrei che, come avviene per la chiave primaria, non mi lasciasse inserire la tupla, dato che non esiste nessuna tupla in t1 con chiave 7.
Non lo trovate perlomeno strano, che non siano stati fatti questi controlli?
Ciao.