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

Dois-je utiliser la règle CASCADE DELETE ?

ON DELETE CASCADE est correct, mais uniquement lorsque les lignes dépendantes sont vraiment une extension logique de la ligne en cours de suppression. Par exemple, il est acceptable que DELETE ORDERS supprime les ORDER_LINES associées, car vous souhaitez clairement supprimer cette commande, qui se compose d'un en-tête et de quelques lignes. D'autre part, SUPPRIMER LE CLIENT ne doit pas supprimer les COMMANDES associées car les COMMANDES sont importantes en elles-mêmes, ce ne sont pas seulement des attributs d'un client.

Une façon de penser à cela est la suivante :si j'émets DELETE X et qu'il supprime également Y, serai-je heureux ou malheureux ? Et si j'émets DELETE X et qu'on me dit "ne peut pas supprimer X car Y existe", serai-je content de la protection, ou irrité par le désagrément ?