You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server无法删除外键:执行ALTER TABLE语句报Msg 156语法错误

解决SQL Server删除外键时的语法错误问题

哦,这个坑我踩过!你收到的Msg 156错误,核心原因是SQL Server删除外键的语法和你写的不一样——它不支持直接用DROP FOREIGN KEY,得用DROP CONSTRAINT来指定外键约束的名称。

为什么出错?

DROP FOREIGN KEY是MySQL等数据库的语法,但在SQL Server里,所有类型的约束(外键、主键、唯一约束等)都需要通过DROP CONSTRAINT来删除,而不是单独的DROP FOREIGN KEY关键字,所以SQL Server会识别不了你语句里的FOREIGN,抛出语法错误。

正确的删除语句

把你的语句改成下面这样就可以正常执行了:

ALTER TABLE dbo.[User] DROP CONSTRAINT FK_User_UserTypeID;

额外小技巧(怕记错外键名?)

如果你不确定表上的外键准确名称,可以用这个查询来查看dbo.[User]表上所有的外键:

SELECT name AS ForeignKeyName
FROM sys.foreign_keys
WHERE parent_object_id = OBJECT_ID('dbo.[User]');

执行后就能拿到所有外键的名称,直接复制用就行,避免拼写错误。

内容的提问来源于stack exchange,提问作者Moeez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:34:09