Salve a tutti,
sto implementando nelle tabelle dei vincoli di integrità referenziali ma in realtà mi sono accorto che non funzionano e non capisco il perchè.
Per essere più chiaro posto il mio esempio:
codice:
CREATE TABLE utente (
id int(11) NOT NULL AUTO_INCREMENT,
nome varchar(100) NOT NULL,
cognome varchar(100) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE messaggio (
id int(11) NOT NULL AUTO_INCREMENT,
titolo varchar(70) NOT NULL,
testo text NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE scrivimessaggio (
id int(11) NOT NULL AUTO_INCREMENT,
id_utente int(11) NOT NULL,
id_msg int(11) NOT NULL,
PRIMARY KEY (id),
foreign key(id_utente) references utente(id) on delete cascade on update cascade,
foreign key(id_msg) references messaggio(id) on delete cascade on update cascade
);
INSERT INTO utente(nome, cognome) VALUES('dfvsdfv','sdfvdfsv');
INSERT INTO messaggio(titolo, testo) VALUES('dfvsdfvdsfv','sdfvsdfvsdfvdsfvdsfvsdfvdsfvdsfv');
// Inserisco il valore 1,1 per comodità in realtà lo devo prelevare dalle rispettive tabelle
INSERT INTO scrivimessaggio(id_utente, id_msg) VALUES(1,1);
Ho queste 3 semplici tabelle, praticamente se non ho capito male applicando gli UPDATE e DELETE a cascata se faccio l'UPDATE dell'id nella tabella utente dovrebbe aggiornarsi anche l' id_utente nella tabella scrivimessaggio ma questo non accade.
codice:
UPDATE utente SET id = 2 WHERE id =1;
ora la tabella scrivimessaggio contiene ancora
codice:
id id_utente id_msg
1 1 1
ma non dovrebbe contenere QUESTO????
codice:
id id_utente id_msg
1 2 1