Mysql
 sql >> Database >  >> RDS >> Mysql

Come eliminare da una tabella senza dover eliminare un vincolo

Poiché la chiave esterna della tabella PRODUCT non specifica un ON DELETE azione, avrà il comportamento predefinito che è RESTRICT . Poiché non puoi aggiornare questo vincolo a SET NULL , probabilmente dovresti impostarli da solo NULL.

Innanzitutto, modifica la tabella in modo che la chiave esterna SUPPLIER_NAME possa accettare valori NULL.

Quindi, aggiorna i PRODOTTI il cui fornitore si trova negli USA, imposta il loro NOME_FORNITORE su NULL. Qualcosa del genere:

update PRODUCT set SUPPLIER_NAME = NULL where SUPPLIER_NAME IN (
select SUPPLIER_NAME from SUPPLIER where COUNTRY = 'USA');

E infine puoi cancellare i FORNITORI con PAESE ='USA'.