【问题标题】:SQL Server : cannot drop tableSQL Server:无法删除表
【发布时间】: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 语句!

标签: sql sql-server database foreign-keys drop-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 的名称与我的命令完全相同,在键下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-06
相关资源
最近更新 更多