一种检查SQL 2005中是否存在外键的方法

时间:2009-05-15 14:35:57

标签: sql sql-server-2005 foreign-keys

是否有一种简单的方法可以检查表中的列是否存在外键?我正在编写一个脚本,只有当它不存在时才会添加外键。

2 个答案:

答案 0 :(得分:69)

您可以使用此脚本:

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

如果您展开表并右键单击现有FK并选择脚本键为“DROP TO”,则可以执行此操作,然后您将从SQL获得生成的脚本。

答案 1 :(得分:8)

宇呼!过去两天我只是花了这么多时间。

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)