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

Entendendo as regras de atualização e exclusão para relacionamentos no SSMS 2008


A chave estrangeira define um relacionamento pai-filho entre duas tabelas. A chave primária na tabela pai é a chave estrangeira nas até n linhas da tabela filha.

Agora, se essa chave primária na tabela pai recebe UPDATE, a UPDATE RULE entra em ação. Todas as linhas filhas também são atualizadas, definidas como NULL ou qualquer outra coisa. A melhor prática, no entanto, é ter uma chave primária que NUNCA mude (um ID fixo ou algo assim), então essa é a regra menos importante.

A mais importante é a regra DELETE - e se a linha pai for excluída (por exemplo, o pedido for excluído)? Você também pode excluir todas as linhas filhas (todos os itens de linha do pedido) com CASCADE DELETE ou pode definir sua chave estrangeira como NULL (eles não têm mais um pai) - isso depende totalmente do seu cenário concreto.

No cenário Pedido/linhas do pedido, pode ser totalmente útil excluir as linhas do pedido quando o pedido completo for excluído, mas você provavelmente não deseja excluir um produto, apenas porque um pedido que faz referência a ele foi excluído - não há uma única resposta CORRETA - depende do seu cenário e do seu aplicativo.

Marco