Je cherche un moyen de désactiver temporairement toutes les contraintes de la base de données (par exemple, les relations de table).
J'ai besoin de copier (à l'aide des INSERT) les tables d'une base de données vers une autre base de données. Je sais que je peux y parvenir en exécutant les commandes dans le bon ordre (pour ne pas rompre les relations).
Mais ce serait plus facile si je pouvais désactiver temporairement la vérification des contraintes et la réactiver après la fin de l'opération.
Est-ce possible?
sql-server
etsql-server-2005
. Le lien que j'ai donné est pour SQL Server, mais vous pouvez faire la même chose dans Oracle - voir ici et ici . Vous pouvez également le faire dans PostgreSQL .Réponses:
Vous ne pouvez désactiver les contraintes FK et CHECK
que dans SQL 2005+. Voir ALTER TABLEou
Les clés primaires et les contraintes uniques ne peuvent pas être désactivées, mais cela devrait être OK si je vous ai bien compris.
la source
la source
check check
que beaucoup oublient !!Et, si vous voulez vérifier que vous N'AVEZ PAS brisé vos relations et introduit des orphelins, une fois que vous avez réarmé vos chèques, c'est-à-dire
ou
alors vous pouvez revenir en arrière et faire une mise à jour sur toutes les colonnes cochées comme ceci:
Et toute erreur à ce stade sera due au non-respect des contraintes.
la source
Vous pouvez réellement désactiver toutes les contraintes de base de données dans une seule commande SQL et les réactiver en appelant une autre commande unique. Voir:
Je travaille actuellement avec SQL Server 2005 mais je suis presque sûr que cette approche a également fonctionné avec SQL 2000
la source
Désactivation et activation de toutes les clés étrangères
voir Désactivation des contraintes et des déclencheurs dans MSDN Magazine
la source