Corsi on-line

MySQL: eliminare violazioni di integrità

L’integrità referenziale nelle relazioni tra tabelle di un database non è un concetto molto semplice da spiegare in linea teorica, ma è di grande utilità pratica; si immagini di avere due tabelle tra le quali esiste una relazione stabilita attraverso una foreign key o “chiave esterna”, in questo caso potremo identificare come violazioni di integrità tutti quei record che non soddisfano questa relazione. L’argomento appare più chiaro osservando la struttura delle seguenti tabelle:

TABLE Utenti
id INT(3),
nome VARCHAR(20),
cognome VARCHAR(20),
anni INT(3),
id_indirizzo INT(3) [ foreign key ],
livello SET('1', '2', '3')
TABLE Recapiti_Utenti
id_indirizzo INT(3),
indirizzo VARCHAR(50),
telefono VARCHAR(10),
email VARCHAR(127)

Nel caso in esempio, la nostra chiave esterna è “id_indirizzo”, essa mette in relazione le due tabelle e tramite essa potrà verificarsi una violazione d’integrità per ogni record della prima tabella associato ad un indirizzo non presente nella seconda. Per eliminare questo problema si utilizzerà un’istruzione come la seguente:

DELETE FROM Utenti WHERE id_indirizzo NOT IN (SELECT id_indirizzo FROM Recapiti_Utenti)
Post correlati
I più letti del mese
Tematiche