2009-05-15 26 views

Répondre

65

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 la table et un clic droit sur une clé de script FK et choisissez existant « DROP TO » et vous obtiendrez produit un script de SQL.

+0

Ce script a très bien fonctionné! Je ne peux pas croire que vous pourriez écrire quelque chose comme ça dans le menu. Merci beaucoup pour votre aide. –

+5

Vous pouvez pratiquement faire un clic droit sur n'importe quoi dans SQL et le faire générer un script pour vous, Tables, Procédures stockées, Clé étrangère et plus encore. Le studio de gestion est votre ami une fois que vous apprenez quelques-unes des fonctionnalités intéressantes qu'il peut faire. – CodeLikeBeaker

+0

Cette méthode ne fonctionne que si le nom par défaut de la clé étrangère est utilisé. Il n'est pas fiable de travailler sur des noms basés sur des hypothèses, surtout si vous travaillez sur des bases de données créées par d'autres personnes qui pourraient suivre une convention de nommage différente. Existe-t-il des moyens de vérifier si une colonne particulière est une clé étrangère à une autre table au lieu de vérifier le nom de la clé étrangère? –

7

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

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) 
Questions connexes