0

我想从表中删除外键约束,但不确定是哪个表。我只有这个信息。请检查屏幕截图 在此处输入图像描述

我想删除一个表,但由于某些 FK 限制,它不允许我删除。我要删除的表是“ZIP_Codes”

4

4 回答 4

3

此查询将给出外键名称和引用表名称

SELECT CAST(F.NAME AS VARCHAR(255)) AS FOREIGN_KEY_NAME
, CAST(P.NAME AS VARCHAR(255)) AS PARENT_TABLE
FROM SYSOBJECTS F
INNER JOIN SYSREFERENCES R ON F.ID = R.CONSTID
INNER JOIN SYSOBJECTS P ON R.RKEYID = P.ID
INNER JOIN SYSCOLUMNS RC ON R.RKEYID = RC.ID AND R.RKEY1 = RC.COLID
WHERE F.TYPE = 'F'
于 2012-10-11T09:22:30.780 回答
1

试试这个:

DECLARE @parent_object_id int;
DECLARE @TableName varchar(255);
SET @parent_object_id = 1234103437;

SELECT  @TableName = OBJECT_NAME(object_id)
FROM sys.objects
Where object_id = @parent_object_id;

ALTER TABLE [TableName] DROP CONSTRAINT [ForeignKeyName]
于 2012-10-11T09:41:20.090 回答
1

如果您使用的是 SQL Server Management Studio,

右键单击您的表并单击View Dependencies以了解依赖于您的表的所有对象.. 您还可以通过选择相应的选项按钮查看您的表所依赖的对象..

在你做之前最好知道你正在丢弃哪些对象以及它们有什么意义。

于 2012-10-11T09:51:23.537 回答
0

要查找具有指向 Zip_Codes 表的外键的所有表:

select object_schema_name([parent_object_id]), object_name([parent_object_id]), [name]
from sys.foreign_keys
where referenced_object_id = object_id('ZIP_Codes')
于 2012-10-11T14:55:50.817 回答