Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Devo usar a regra CASCADE DELETE?


ON DELETE CASCADE está bem, mas apenas quando as linhas dependentes são realmente uma extensão lógica da linha que está sendo excluída. Por exemplo, não há problema em DELETE ORDERS excluir os ORDER_LINES associados porque claramente você deseja excluir esse pedido, que consiste em um cabeçalho e algumas linhas. Por outro lado, DELETE CUSTOMER não deve excluir os ORDERS associados porque os ORDERS são importantes por si só, não são apenas atributos de um cliente.

Uma maneira de pensar sobre isso é:se eu emitir DELETE X e também excluir Y, ficarei feliz ou infeliz? E se eu emitir DELETE X e me disserem "não posso excluir X porque Y existe", ficarei feliz com a proteção ou irritado com o inconveniente?