Home Database & Server Gestire le Foreign Keys in MySQL
Gestire le Foreign Keys in MySQL
Database & Server
Giovedì 22 Dicembre 2011 17:26

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.

Ultimo aggiornamento Giovedì 22 Dicembre 2011 17:44