如何检查外键是否存在?

Mor*_*eza 2 sql sql-server foreign-keys

我想在表中找到一个外键,但是有重命名/更改主键的更改.如何确定表中的外键和主键?

相关代码:

SELECT * FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS 
         WHERE CONSTRAINT_NAME = 'FK_Name'
Run Code Online (Sandbox Code Playgroud)

Yar*_*lav 10

随意使用此脚本,它返回一个包含以下值的列表:

FKName  ParentTable  ParentColumnName    ReferencedTable    ReferencedColumnName
Run Code Online (Sandbox Code Playgroud)

脚本:

SELECT fk.Name AS 'FKName'
          ,OBJECT_NAME(fk.parent_object_id) 'ParentTable'
          ,cpa.name 'ParentColumnName'
          ,OBJECT_NAME(fk.referenced_object_id) 'ReferencedTable'
          ,cref.name 'ReferencedColumnName'
    FROM   sys.foreign_keys fk
           INNER JOIN sys.foreign_key_columns fkc
                ON  fkc.constraint_object_id = fk.object_id
           INNER JOIN sys.columns cpa
                ON  fkc.parent_object_id = cpa.object_id
                AND fkc.parent_column_id = cpa.column_id
           INNER JOIN sys.columns cref
                ON  fkc.referenced_object_id = cref.object_id
                AND fkc.referenced_column_id = cref.column_id
Run Code Online (Sandbox Code Playgroud)