2010-08-16 512 views
15

我正在使用Microsoft SQL Server 2005,并且通常对SQL来说比较新。SQL Server错误:“%”不是一个约束。无法删除约束。查看以前的错误

数据库“Information”中的两个表“Resources”和“Group_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' is not a constraint. Could not drop constraint. See previous errors.

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

+2

您是否尝试从其他表中删除约束?这将回答你是否从正确的地方删除它的问题。 – SqlRyan 2010-08-16 19:40:19

+0

是的 - 我已经尝试从“gropus_resources”和“resources”中删除约束。我仍然得到同样的错误。感谢您的建议。 – amanda 2010-08-16 19:47:10

回答

21

您收到此错误:

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' 

哎哟,我错了,我原来的答案,这里是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小马!

+0

感谢您的代码示例。我把以下内容: “ALTER TABLE DROP FOREIGN KEY ” ,它给了这个错误: “附近关键字 '洋' 的语法不正确。” 与第二个例子相同。 (顺便说一句,所有的东西都拼写正确,所以我不知道为什么我不断收到错误:语法看起来是正确的。) – amanda 2010-08-16 19:58:42

+0

@OMG小马:感谢您指出我的错误,而不是向下投票! – JohnB 2010-08-16 20:57:12

+0

这个答案解决了我的问题:) @JohnB&@OMG小马:非常感谢您的建议! – amanda 2010-08-16 21:01:20