2009-05-15 7 views

Odpowiedz

65

Można użyć tego skryptu:

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 

Można to zrobić, jeśli rozwinąć tabelę i kliknij prawym przyciskiem na istniejącym FK i wybierz klucz skryptu jako „spaść”, a następnie pojawi się wygenerowany skrypt z SQL.

+0

Ten skrypt działał świetnie! Nie mogę uwierzyć, że możesz napisać coś takiego z menu. Dzięki za pomoc. –

+5

Możesz prawie kliknąć prawym przyciskiem myszy wszystko w SQL i wygenerować skrypt dla ciebie, tabele, procedury składowane, klucz obcy i więcej. Studio zarządzania jest twoim przyjacielem, gdy nauczysz się kilku fajnych funkcji, które może zrobić. – CodeLikeBeaker

+0

Ta metoda działa tylko wtedy, gdy używana jest domyślna nazwa klucza obcego. Nie można polegać na pracy nad nazwami opartymi na założeniach, zwłaszcza jeśli pracujesz nad bazami danych utworzonymi przez osoby, które mogą przestrzegać innej konwencji nazewnictwa. Czy są jakieś sposoby sprawdzenia, czy dana kolumna jest kluczem obcym do innej tabeli zamiast sprawdzania nazwy klucza obcego? –

7

Woo-hoo! Właśnie spędziłem ostatnie dwa dni na robieniu tego.

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)