web-dev-qa-db-fra.com

Un moyen de vérifier si une clé étrangère existe dans SQL 2005

Existe-t-il un moyen simple de vérifier s'il existe une clé étrangère pour une colonne d'une table? J'écris un script qui ajoutera la clé étrangère uniquement si elle n'existe pas.

39
Barbara Jackson

Vous pouvez utiliser ce script:

IF EXISTS (SELECT * 
           FROM sys.foreign_keys 
           WHERE object_id = OBJECT_ID(N'[dbo].[FK_NAME]') 
             AND parent_object_id = OBJECT_ID(N'[dbo].[MyTable]'))
BEGIN
    -- do stuff
END

Cela peut être fait si vous développez le tableau et faites un clic droit sur un FK existant et choisissez la clé de script comme "DROP TO" et vous obtiendrez alors un script généré à partir de SQL.

70
CodeLikeBeaker

Woo-hoo! Je viens de passer les deux derniers jours à faire ça.

IF NOT EXISTS ( SELECT  name
                FROM    sys.foreign_keys
                WHERE   name = 'FK_Name' ) 
    ALTER TABLE table_name ADD CONSTRAINT FK_Name FOREIGN KEY (idcol) 
                           REFERENCES OtherTable(idcol)
9
ristonj