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 表 无法更新和删除 子查询返回的值不止一个
无法在 View SQL Server 2005 上执行删除