Magazine High tech

Supprimer une contrainte d'intégrité lié à un champ sans en connaître le nom sous SQL

Publié le 19 novembre 2008 par Dave Lizotte

Le titre peu porter à confusion, mais voyons un peu le contexte. Nous avons une multitude de champ à supprimer dans une de nos bases de données. Chaque champ est lié à une contrainte d'intégrité (constraint) dont le nom est inconnu. Pour pouvoir supprimer les champs, il faut d'abord supprimer les contraintes qui leurs sont liées. Voyons ici comment supprimer ces contraintes sans avoir besoin de faire le travail manuellement.

T-SQL

CREATE PROCEDURE [dbo].[deleteConstraint_SP]
(
   -- Nom de la table ou la contrainte est situé.
   @SearchField as varchar(250) = null,
   -- Nom du champ lié à la contrainte inconnu.
   @SearchTable as varchar(250) = null
)
AS
BEGIN
   -- Variable qui contiendra la nom de la contrainte d'intégrité lié au champ demandé en paramètre.
   DECLARE @default as varchar(250)  
  
   -- Requête de récupération du nom de la contrainte
   SELECT @default = object_name(cdefault) FROM syscolumns WHERE id = object_id(@SearchTable) AND name = @SearchField
   -- Suppression de la contrainte
   EXEC ('ALTER TABLE ' + @SearchTable + ' DROP CONSTRAINT ' + @default)
END


Retour à La Une de Logo Paperblog

A propos de l’auteur


Dave Lizotte 57 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte