【问题标题】:A way to check if foreign key exists in SQL 2005一种检查 SQL 2005 中是否存在外键的方法
【发布时间】:2010-10-26 12:38:41
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你可以使用这个脚本:

    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 生成的脚本。

    【讨论】:

    • 这个脚本效果很好!我不敢相信您可以从菜单中编写类似的脚本。非常感谢您的帮助。
    • 您几乎可以右键单击 SQL 中的任何内容并让它为您生成脚本、表、存储过程、外键等等。一旦您了解了它可以做的一些很酷的功能,Management Studio 就是您的朋友。
    • 此方法仅在使用外键的默认名称时有效。根据假设处理名称是不可靠的,尤其是当您处理由可能遵循不同命名约定的其他人创建的数据库时。有什么方法可以检查特定列是否是另一个表的外键,而不是检查外键的名称?
    • @TwistedWhisper - 对类似问题的回答应该为您指明正确的方向:stackoverflow.com/a/9090247/1075980
    【解决方案2】:

    哇哦!我只是在过去两天做这个。

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-18
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 2021-02-08
      • 2020-01-18
      • 2014-09-14
      • 1970-01-01
      相关资源
      最近更新 更多