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

39 sql sql-server-2005 foreign-keys

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

Cod*_*ker 70

您可以使用此脚本:

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
Run Code Online (Sandbox Code Playgroud)

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

  • 您几乎可以右键单击SQL中的任何内容并让它为您生成脚本,表,存储过程,外键等.管理工作室是您的朋友,一旦您学习了它可以做的一些很酷的功能. (5认同)

ris*_*onj 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)
Run Code Online (Sandbox Code Playgroud)