无法删除SQL Server中的主键约束

时间:2016-03-15 18:01:06

标签: sql-server sql-server-2008 tsql primary-key

当我在SSMS中打开表的设计器时,第一列Id分配了一个主键(IDENTITY),并且旁边显示了键图标。在“索引/键”窗口中,我可以看到名为PK_dbo.Lines的{​​{1}}条目,并键入[PK_dbo.Lines]

Primary Key

返回

  

Msg 3728,Level 16,State 1,Line 33
  'PK_dbo.Lines'不是约束。

如果我执行

ALTER TABLE dbo.Lines DROP CONSTRAINT [PK_dbo.Lines]

我可以看到所有表的主键,但表SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE ...

除外

此查询也不会返回任何结果:

Lines

知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

如果对数据库中的表/列进行任何更改,则需要手动刷新SSMS以正确反映这些更改。难道它就像右键单击Tables并选择刷新一样简单吗?

或者,您可能错误地拼写了PK名称?请尝试使用以下脚本从表格'行'

中删除PK
declare @PK_Name nvarchar(200);
declare @strSQL nvarchar(max);

select  @PK_Name = (
                    select  i.name as IndexName
                    from    sys.indexes as i
                    inner join sys.index_columns as ic
                    on      i.object_id = ic.object_id
                            and i.index_id = ic.index_id
                    inner join sys.tables as t
                    on      t.object_id = i.object_id
                    where   i.is_primary_key = 1
                            and t.name = N'Lines'
                   )

set @strSQL = N'ALTER TABLE dbo.Lines DROP CONSTRAINT ' + @PK_Name

execute(@strSQL)

首先,脚本检索PK的正确名称,然后尝试删除PK约束。