sql-server – SQL Server错误:“%”不是约束.无法删除约束.查看以前的错误

前端之家收集整理的这篇文章主要介绍了sql-server – SQL Server错误:“%”不是约束.无法删除约束.查看以前的错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Microsoft sql Server 2005,而且通常比较新的sql.

数据库“信息”中的两个表“资源”和“组合资源”之间有一个关系.资源在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.

解决方法

你得到这个错误
Msg 3728,Level 16,State 1,Line 1
'fk_gr_res_resources' is not a constraint.
Msg 3727,State 0,Line 1
Could not drop constraint. See prevIoUs errors.

因为FK约束不存在!

你确定信息是正确的模式名称,而不是dbo?

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小马!

猜你在找的MsSQL相关文章