如何删除外键约束

时间:2012-10-11 09:16:34

标签: sql-server tsql

我想从表中删除外键约束,但不确定哪个表是那样的。我只是掌握了这些信息。请检查屏幕截图 enter image description here

我想放弃一张桌子,但由于一些FK限制,它不允许我放弃。我要删除的表是'ZIP_Codes'

4 个答案:

答案 0 :(得分:2)

此查询将提供外键名称和引用表名称

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'

答案 1 :(得分: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]

答案 2 :(得分:1)

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

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

在你做之前,最好先了解你正在丢弃的对象以及它们具有什么重要性。

答案 3 :(得分: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')