Maison >base de données >tutoriel mysql >Comment désactiver et réactiver temporairement les contraintes de base de données dans MS SQL ?

Comment désactiver et réactiver temporairement les contraintes de base de données dans MS SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-10 10:25:42472parcourir

How to Temporarily Disable and Re-enable Database Constraints in MS SQL?

Gestion temporaire des contraintes de base de données dans MS SQL Server

La désactivation temporaire des contraintes dans Microsoft SQL Server peut rationaliser les opérations de base de données, en particulier lors du transfert de données. Ce guide détaille les méthodes pour désactiver et réactiver temporairement les contraintes.

Désactivation des contraintes

Désactivation des contraintes de table individuelles (ALTER TABLE) :

Utilisez cette commande pour désactiver les contraintes sur une seule table :

<code class="language-sql">ALTER TABLE tableName NOCHECK CONSTRAINT ALL;</code>

Désactivation des contraintes à l'échelle de la base de données (sp_msforeachtable) :

Cette procédure stockée désactive les contraintes sur toutes les tables de la base de données :

<code class="language-sql">EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL';</code>

Réactivation des contraintes

Réactivation des contraintes de table individuelles (ALTER TABLE) :

Réactivez les contraintes sur une table spécifique avec cette commande :

<code class="language-sql">ALTER TABLE tableName WITH CHECK CHECK CONSTRAINT ALL;</code>

Réactivation des contraintes à l'échelle de la base de données (sp_msforeachtable) :

Réactivez les contraintes pour toutes les tables de la base de données à l'aide de cette procédure stockée :

<code class="language-sql">EXEC sp_msforeachtable 'ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL';</code>

Application pratique

L'exemple suivant présente le processus de désactivation et de réactivation temporaires des contraintes lors d'une opération de copie de données :

<code class="language-sql">-- Disable constraints on TableA and TableB
ALTER TABLE TableA NOCHECK CONSTRAINT ALL;
ALTER TABLE TableB NOCHECK CONSTRAINT ALL;

-- Copy data from TableA to TableB
INSERT INTO TableB SELECT * FROM TableA;

-- Re-enable constraints on TableA and TableB
ALTER TABLE TableA WITH CHECK CHECK CONSTRAINT ALL;
ALTER TABLE TableB WITH CHECK CHECK CONSTRAINT ALL;</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn