Sql Server: Quel est l'avantage d'utiliser "Enforce foreign key constraint" quand il est défini sur "non"?

Je connais le but de "Appliquer la contrainte de clé étrangère" dans le SGBDR. Mais est-il un avantage quand il est réglé sur "NON" ?

23
demandé sur odiseh 2011-01-05 11:59:41

2 réponses

En production normale, ce paramètre ne doit jamais être défini sur NO.

Mais: lorsque vous développez ou restructurez une base de données, ou lorsque vous effectuez, par exemple, une charge importante de données dont vous aurez besoin pour "désinfecter" (nettoyer), il peut être logique de désactiver les contraintes de clé étrangère pour permettre le chargement de données "non valides" dans une table. Bien sûr , comme je l'ai dit - vous ne devriez pas garder ce paramètre éteint pendant une longue période de temps - vous devriez ensuite procéder à nettoyer les données, soit supprimez les lignes qui violent la contrainte FK ou mettez à jour leurs valeurs afin qu'elles correspondent à une ligne parent.

Encore une fois: en mode de production "normal", ce paramètre ne devrait jamais être NO - mais pour des tâches spécifiques, cela pourrait aider à faire le travail plus facilement. Utilisez-le avec prudence et rallumez toujours les contraintes FK dès que vous le pouvez!

26
répondu marc_s 2013-04-17 14:55:41

Pas dans un usage quotidien, pour autant que je sache. Les fois où j'ai désactivé les clés étrangères pendant un certain temps sont quand il y a des problèmes avec les données et les réparer est caché par des vérifications de relation.

Pendant les opérations groupées, les contrôles de contraintes sont temporairement ignorés afin d'augmenter les performances.

3
répondu vonPryz 2011-01-05 09:13:11