How can I list all foreign keys referencing a given table in SQL Server?

后端 未结 26 2697
梦毁少年i
梦毁少年i 2020-11-22 07:13

I need to remove a highly referenced table in a SQL Server database. How can I get a list of all the foreign key constraints I will need to remove in order to drop the tabl

26条回答
  •  难免孤独
    2020-11-22 08:06

    The most Simplest one is by using sys.foreign_keys_columns in SQL. Here the table contains the Object ids of all the foreign keys wrt their Referenced column ID Referenced Table ID as well as the Referencing Columns and Tables. As the Id's remains constant the result will be reliable for further modifications in Schema as well as tables.

    Query:

    SELECT    
    OBJECT_NAME(fkeys.constraint_object_id) foreign_key_name
    ,OBJECT_NAME(fkeys.parent_object_id) referencing_table_name
    ,COL_NAME(fkeys.parent_object_id, fkeys.parent_column_id) referencing_column_name
    ,OBJECT_SCHEMA_NAME(fkeys.parent_object_id) referencing_schema_name
    ,OBJECT_NAME (fkeys.referenced_object_id) referenced_table_name
    ,COL_NAME(fkeys.referenced_object_id, fkeys.referenced_column_id) 
    referenced_column_name
    ,OBJECT_SCHEMA_NAME(fkeys.referenced_object_id) referenced_schema_name
    FROM sys.foreign_key_columns AS fkeys
    

    We can also add filter by using 'where'

    WHERE OBJECT_NAME(fkeys.parent_object_id) = 'table_name' AND 
    OBJECT_SCHEMA_NAME(fkeys.parent_object_id) = 'schema_name'
    

提交回复
热议问题