Gestire le Foreign Keys in MySQL

Mattepuffo's logo
Gestire le Foreign Keys in MySQL

Gestire le Foreign Keys in MySQL

Creare Foreign Key con MySQL è abbastanza semplice.

Create le tabelle di tipo InnoDB e in fase di creazione della tabella aggiungete le FK:

CREATE TABLE libro ( id INT auto_increment, titolo VARCHAR (200), editore INT NOT NULL, PRIMARY KEY id (id), INDEX editore_key (editore), FOREIGN KEY (editore) REFERENCES editore(id) ON DELETE NO ACTION ON UPDATE NO ACTION) TYPE=InnoDB;

Come vedete abbiamo impostato una FK che si riferisce ad una tabella editore.

Il problema però è come gestire poi le relazioni quando andiamo a modificare/eliminare dei valori nella tabella collegata.

Se vedete qua abbiamo usato NO ACTION:

ON DELETE NO ACTION

ON UPDATE NO ACTION

Ci sono però diverse altre azioni disponibili.

Ve le elenco.

CASCADE

La cancellazione o la modifica di un record nella tabella padre genererà la cancellazione o la modifica dei record collegati nella tabella figlia.

Quindi se cancelliamo un editore cancelleremo tutti i libri collegati; se modifichiamo un editore cambiando, ad esempio l'id, sostituiremo il valore del campo editore anche nella tabella libri.

SET NULL

Attivabile solo se il campo della tabella figlio non è impostato su NOT NULL.

In caso di eliminazione o modifica di un record nella tabella padre i record collegati della tabella figlia verranno modificati impostando il campo NULL.

NO ACTION o RESTRICT

Con queste due azioni il processo viene bloccato.

SET DEFAULT

Definita nello standard SQL ma non implentata in MySQL.


Condividi

Commentami!