Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como excluir de uma tabela sem ter que descartar uma restrição


Como a chave estrangeira para sua tabela PRODUCT não especifique um ON DELETE ação, ele terá o comportamento padrão que é RESTRICT . Como você não pode atualizar essa restrição para SET NULL , você provavelmente teria que defini-los como NULL.

Primeiro, altere a tabela para que a chave estrangeira SUPPLIER_NAME possa aceitar valores NULL.

Em seguida, atualize os PRODUTOS cujo fornecedor está nos EUA, defina seu SUPPLIER_NAME como NULL. Algo assim:
update PRODUCT set SUPPLIER_NAME = NULL where SUPPLIER_NAME IN (
select SUPPLIER_NAME from SUPPLIER where COUNTRY = 'USA');

E finalmente você pode excluir os FORNECEDORES com PAÍS ='EUA'.