如何列出引用SQLServer中给定表的所有外键?

如何列出引用SQLServer中给定表的所有外键?

我需要删除SQLServer数据库中引用很高的表。如何获得删除表所需的所有外键约束的列表?

(SQL回答比在Managementstudio的GUI中单击更好。)


四季花海
浏览 1078回答 3
3回答

慕后森

不知道为什么没人建议但我用sp_fkeys查询给定表的外键:EXEC sp_fkeys 'TableName'还可以指定架构:EXEC sp_fkeys @pktable_name = 'TableName', @pktable_owner = 'dbo'在不指定架构的情况下,博士声明如下:如果未指定pktable_Owner,则应用基础DBMS的默认表可见性规则。在SQLServer中,如果当前用户拥有具有指定名称的表,则返回该表的列。如果未指定pktable_Owner,且当前用户没有拥有具有指定pktable_name的表,则该过程将查找数据库所有者拥有的具有指定pktable_name的表。如果存在,则返回该表的列。

慕工程0101907

我会在SQLServerManagementStudio中使用数据库图表功能,但由于您排除了这种情况-这在SQLServer 2008中是有效的(请不要使用2005年)。要获得引用表和列名的列表.。select      t.name as TableWithForeignKey,      fk.constraint_column_id as FK_PartNo, c.     name as ForeignKeyColumn  from      sys.foreign_key_columns as fkinner join      sys.tables as t on fk.parent_object_id = t.object_idinner join      sys.columns as c on fk.parent_object_id = c.object_id and fk.parent_column_id = c.column_idwhere      fk.referenced_object_id = (select object_id                                 from sys.tables                                 where name = 'TableOthersForeignKeyInto')order by      TableWithForeignKey, FK_PartNo获取外键约束的名称select distinct name from sys.objects where object_id in (   select fk.constraint_object_id from sys.foreign_key_columns as fk     where fk.referenced_object_id =          (select object_id from sys.tables where name = 'TableOthersForeignKeyInto'))
打开App,查看更多内容
随时随地看视频慕课网APP