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