我有一张桌子的主键。我使用下面的查询检查了约束。
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;
查询执行失败,并显示错误消息:
无法执行查询。错误:'。'
附近的语法不正确
以上查询有什么问题?
答案 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];