SQL Server:如何确定table1.col1是否在table2.col2上具有外键约束

时间:2016-03-10 18:04:27

标签: sql sql-server sql-server-2008

给定table1.column1我需要确定它是否有一个外键到table2.column2。

此SQL将运行多次,因此需要非常快。

我已经看到了一些解决方案,但往往比我需要的更复杂(即数据库中的所有外键或桌面上的所有外键)

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是我更喜欢使用的查询,将其制作成视图:

CREATE VIEW vwForeignKeys AS
SELECT
   OBJECT_NAME(f.parent_object_id) TableName,
   COL_NAME(fc.parent_object_id,fc.parent_column_id) ColName,
   OBJECT_NAME (f.referenced_object_id) ReferencedTableName,
   COL_NAME(fc.referenced_object_id,fc.referenced_column_id) ReferencedColName,
   f.Name
FROM
   sys.foreign_keys AS f
INNER JOIN
   sys.foreign_key_columns AS fc
     ON f.OBJECT_ID = fc.constraint_object_id
INNER JOIN
   sys.tables t
      ON t.OBJECT_ID = fc.referenced_object_id

在您的情况下,查询将看起来像

IF EXISTS(
   SELECT 1 
   FROM 
      vwForeignKeys 
   WHERE 
      TableName='table1' 
      AND ColName='column1' 
      AND ReferencedTableName='table2' 
      AND ReferencedColName='column2'
) THEN 
BEGIN
   --FOREIGN KEY EXISTS, DO SOMETHING
END