无法从SQL Server表中删除主键

时间:2018-01-29 09:39:07

标签: sql sql-server constraints

我有一张桌子的主键。我使用下面的查询检查了约束。

 SELECT name
 FROM sys.key_constraints
 WHERE [type] = 'PK'
   AND [parent_object_id] = Object_id('<TableName>');

以上查询的输出: PK_dbo.TableName (整个表只有1个约束)

我试图通过使用以下查询来超越约束。

 ALTER TABLE TableName DROP CONSTRAINT PK_dbo.TableName;

我尝试如下,但同样的错误。

 ALTER TABLE dbo.TableName DROP CONSTRAINT PK_dbo.TableName;

查询执行失败,并显示错误消息:

  

无法执行查询。错误:'。'

附近的语法不正确

以上查询有什么问题?

2 个答案:

答案 0 :(得分:2)

确保您的约束名称中包含 .

如果存在,则在方括号内键入约束名称,否则请确保给出正确的名称

ALTER TABLE dbo.TableName DROP CONSTRAINT [PK_dbo.TableName];

注意:建议不要在对象名称中使用点,空格等字符。相反,请使用PK_dbo_TableName

等下划线

答案 1 :(得分:0)

这是因为主键名中的.。使用[ ]可以避免这样:

ALTER TABLE dbo.TableName DROP CONSTRAINT [PK_dbo.TableName];