Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment supprimer d'une table sans avoir à supprimer une contrainte

En tant que clé étrangère de votre table PRODUCT, ne spécifiez pas de ON DELETE action, il aura le comportement par défaut qui est RESTRICT . Puisque vous ne pouvez pas mettre à jour cette contrainte sur SET NULL , vous devrez probablement les définir vous-même sur NULL.

Tout d'abord, modifiez la table afin que la clé étrangère SUPPLIER_NAME puisse accepter les valeurs NULL.

Ensuite, mettez à jour les PRODUITS dont le fournisseur est aux États-Unis, définissez leur SUPPLIER_NAME sur NULL. Quelque chose comme ça :

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

Et enfin vous pouvez ensuite supprimer les FOURNISSEURS avec COUNTRY ='USA'.