SQL Server:无法删除表

Posted

技术标签:

【中文标题】SQL Server:无法删除表【英文标题】:SQL Server : cannot drop table 【发布时间】:2015-11-23 04:06:18 【问题描述】:

我尝试删除分配的所有外键和主键,但到目前为止我收到以下错误:

消息 3728,第 16 级,状态 1,第 3 行 'fk_DEPENDENT_ESSN' 不是约束。

消息 3727,第 16 级,状态 0,第 3 行 无法删除约束。查看以前的错误。

这是我的命令:

Use Company;
Go

--Dropping FKs from Dependent Table
ALTER TABLE Dependent
DROP fk_DEPENDENT_ESSN

--Dropping FKs from Dept_Locations Table
ALTER TABLE Dept_Locations
DROP fk__DEPT_LOCATIONS__Dnumber

--Dropping FKs from Employee Table
ALTER TABLE Employee
DROP FK__Employee__Dno

ALTER TABLE Employee
DROP FK__Employee__Super___ssn

--Dropping FKs from Project Table
ALTER TABLE Project
DROP FK__Project

--Dropping FKs from WORKS_ON Table
ALTER TABLE WORKS_ON
DROP FK__WORKS_ON__Essn

ALTER TABLE WORKS_ON
DROP FK__WORKS_ON__PNO

我应该如何解决这个问题,抱歉我不能在这里发布我的数据库。如果您有任何问题,请随时发表评论,或者我们可以发送电子邮件。

谢谢

【问题讨论】:

如果您不显示您的架构,可能无法获得准确的答案。 您需要向脚本展示创建表结构,以便我们评估这些键。 我应该如何在这里发布我的架构 发布创建表的CREATE TABLE 语句! 【参考方案1】:

错误是因为fk_DEPENDENT_ESSN 不存在。您是否缺少并下划线?应该是fk__DEPENDENT_ESSN

您可以使用sysobjects 表检查 FK 的名称。

SELECT * FROM sysobjects WHERE name LIKE '%DEPENDENT_ESSN'

见SQL Server 2008 cannot drop constraint

【讨论】:

谢谢 我可以给你发电子邮件吗?很难在这里放很多东西。或者我可以吗? @LinWei 只需运行我发布的查询,它将检查架构。如果它找到一行,它将显示与DROP 一起使用的密钥的正确名称。如果没有,那么您需要使用更好的WHERE 子句来查找密钥。 它只是给了我一堆长长的清单 在我的数据库上,fk 的名称与我的命令完全相同,在键下

以上是关于SQL Server:无法删除表的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver 表 无法更新和删除 子查询返回的值不止一个

SQL Server:使用 FK 删除表

sql server无法修改数据

无法在 View SQL Server 2005 上执行删除

从 SQL Server ColumnStore 中删除会出现“无法插入重复键”错误

为啥我不能删除此 SQL Server 表 [重复]