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:
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: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);
ora la tabella scrivimessaggio contiene ancoracodice:UPDATE utente SET id = 2 WHERE id =1;
ma non dovrebbe contenere QUESTO????codice:id id_utente id_msg 1 1 1
codice:id id_utente id_msg 1 2 1

Rispondi quotando