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