当我在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
知道这里发生了什么吗?
答案 0 :(得分:0)
如果对数据库中的表/列进行任何更改,则需要手动刷新SSMS以正确反映这些更改。难道它就像右键单击Tables并选择刷新一样简单吗?
或者,您可能错误地拼写了PK名称?请尝试使用以下脚本从表格'行'
中删除PKdeclare @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约束。