【问题标题】:Dropping PRIMARY KEY constraint删除 PRIMARY KEY 约束
【发布时间】:2014-07-14 11:26:31
【问题描述】:

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

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 组合在一起形成主键。

现在我想从主键约束中删除 [Unique_Workflow_ID] 并只保留 [Workflow_ID] 作为主键。

怎么做?

【问题讨论】:

  • 做了哪些研究来解决这个问题?尝试过的解决方案的哪一部分不起作用?到目前为止你尝试了什么? Hint

标签: sql-server


【解决方案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 语句将(正确地)抛出一个错误,即该列中的数据不是唯一的。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 1970-01-01
      相关资源
      最近更新 更多