加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:24:52 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用Microsoft SQL Server 2005,而且通常比较新的SQL. 数据库“信息”中的两个表“资源”和“组合资源”之间有一个关系.资源在Group_Resources中有一个外键“id”,命名为“resource_id”.两者之间有一个外键约束,“fk_gr_res_resources”. 我被建立为数
我正在使用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小马!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读