Sybase ASE删除约束报错:约束不存在但实际存在的解决求助
解决无法删除SQL外键约束的问题
执行语句尝试删除dbo.menu_items表的FK_menu_items_menu_icons约束:
alter table dbo.menu_items drop constraint FK_menu_items_menu_icons
收到报错:
SQL Error [3701] [42S02]: Cannot drop the constraint 'FK_menu_items_menu_icons', because it doesn't exist in the system catalogs
但可视化界面中该表的外键列表里明确存在此约束,可通过以下方法解决:
查询真实的约束名称
可视化界面显示的名称可能包含不可见的空格或格式差异,通过系统视图查询该表的所有外键约束:SELECT name FROM sys.foreign_keys WHERE parent_object_id = OBJECT_ID('dbo.menu_items')复制查询结果中的约束名称,替换到删除语句中执行。
使用带方括号的标识符
若约束名称存在大小写敏感或特殊字符问题,用方括号包裹约束名称执行删除:alter table dbo.menu_items drop constraint [FK_menu_items_menu_icons]确认当前数据库上下文
确保操作的是目标数据库,先切换数据库再执行删除:USE YourTargetDatabaseName; GO alter table dbo.menu_items drop constraint FK_menu_items_menu_icons刷新系统缓存
系统视图缓存可能存在延迟,刷新后再尝试操作:DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB(DB_ID('YourTargetDatabaseName')); GO
内容的提问来源于stack exchange,提问作者Jabri Juhinin
相关产品推荐
相关产品推荐

