删除PRIMARY KEY约束

时间:2014-07-14 11:26:31

标签: sql-server

我创建了一个表,其中有两列组合为主键。

CREATE TABLE [dbo].[Workflow_Name]
(
  [Workflow_ID] [int] NOT NULL,
  [Unique_Workflow_ID] [int] NOT NULL,
  [Workflow_Name] [varchar](255) NULL,
  [Row_ID] [int] NULL,
  [ReleaseVersion] [varchar](255) NULL,
  [Release] [varchar](255) NULL, 
  CONSTRAINT [PK_WorkFlowName] PRIMARY KEY CLUSTERED 
    ([Workflow_ID] ASC, [Unique_Workflow_ID] ASC )
)

如图所示, [Workflow_ID] ASC,[Unique_Workflow_ID] ASC 组合在一起形成主键。

enter image description here

现在我想从主键约束中删除[Unique_Workflow_ID]并仅将[Workflow_ID]维护为主键。

怎么做?

2 个答案:

答案 0 :(得分:1)

您可以删除主键约束,然后仅使用Workflow_ID创建一个新约束。但要确保它只有唯一的值。

答案 1 :(得分:1)

您可以在选择表所在的数据库后,通过在SSMS查询窗口中执行以下语句来执行此操作。

ALTER TABLE [dbo].[Workflow_Name] 
DROP CONSTRAINT [PK_WorkFlowName]

ALTER TABLE [dbo].[Workflow_Name] 
ADD CONSTRAINT [PK_WorkFlowName] PRIMARY KEY ([Workflow_ID] ASC)

请注意,为了使其正常工作,如果[Workflow_Name]中有现有行,则此新单列主键(即[Workflow_ID]中的数据)必须每行唯一。否则,ALTER语句将(正确地)抛出数据在该列中不唯一的错误。