【问题标题】:SQL Server Error: "%" is not a constraint. Could not drop constraint. See previous errorsSQL Server 错误:“%”不是约束。无法删除约束。查看以前的错误
【发布时间】:2010-08-16 19:38:54
【问题描述】:

我使用的是 Microsoft SQL Server 2005,一般来说对 SQL 比较陌生。

数据库“Information”中的两个表“Resources”和“Group_Resources”之间存在关系。 Resources 在 Group_Resources 中有一个外键“id”,名为“resource_id”。两者之间有一个外键约束“fk_gr_res_resources”。

我被确立为数据库所有者,并拥有完整的读/写/创建/删除权限。

我想删除外键约束,所以我执行了以下查询:

ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources

并收到以下错误:

'fk_gr_res_resources' 不是约束。无法删除约束。查看以前的错误。

我很困惑,因为它是一个约束,并且没有拼写错误。我要不正确地删除它吗?我是否从不正确的表中删除了约束?任何建议将不胜感激,请不要激怒我:毕竟我是 SQL 新手。

【问题讨论】:

  • 您是否尝试从另一个表中删除约束?这将回答您是否从正确的位置删除它的问题。
  • 是的 - 我尝试从“gropus_resources”和“resources”中删除约束。我仍然得到同样的错误。感谢您的建议。

标签: sql-server


【解决方案1】:

您收到此错误:

Msg 3728, Level 16, State 1, Line 1
'fk_gr_res_resources' is not a constraint.
Msg 3727, Level 16, State 0, Line 1
Could not drop constraint. See previous errors.

因为 FK 约束不存在!

您确定 Information 是正确的架构名称而不是 dbo

1.此 SQL 将证明 FK 不存在:

SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources'

2。糟糕,我原来的答案错了,这是 SQL Server 的正确语法:

ALTER TABLE <table_name>
DROP CONSTRAINT <foreignkey_name>

3.您的数据库示例:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources')
BEGIN
  ALTER TABLE Group_Resources
  DROP CONSTRAINT fk_gr_res_resources
END;

4.尝试运行:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources')
BEGIN
  ALTER TABLE Group_Resources
  ADD CONSTRAINT fk_gr_res_resources
  FOREIGN KEY (resource_id)
  REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */
END;

5.然后试试这个,看看你是否仍然得到那个错误:

ALTER TABLE Group_Resources
DROP CONSTRAINT fk_gr_res_resources

另一种语法是针对 MySQL 的,抱歉:

ALTER TABLE <table_name>
DROP FOREIGN KEY <foreignkey_name>

感谢您纠正我 OMG 小马!

【讨论】:

  • 感谢代码示例。我输入了以下内容:“ALTER TABLE DROP FOREIGN KEY ”,它给出了这个错误:“关键字'FOREIGN'附近的语法不正确。”与第二个示例相同。 (顺便说一句,所有内容都拼写正确,所以我不确定为什么我不断收到错误:语法看起来是正确的。)
  • @OMG Ponies:感谢您指出我的错误,也不要投反对票!
  • 这个答案解决了我的问题 :) @JohnB & @OMG Ponies:非常感谢大家的建议!!
猜你喜欢
  • 2011-02-05
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多