为什么我不能在同一个表上同时指定主键和唯一约束?

时间:2014-04-11 12:23:58

标签: sql sql-server primary-key unique-constraint

我正在尝试创建一个表:

CREATE TABLE [MyTable]
(
    [Id] [int] IDENTITY,
    [Column1] [int] NOT NULL,
    [Column2] [int] NOT NULL

    CONSTRAINT [PK_MyTable_Id] PRIMARY KEY ([Id])
    CONSTRAINT [UQ_MyTable_Column1_Column2] UNIQUE ([Column1], [Column2])
)

此脚本失败并显示错误:

  

已为列定义了PRIMARY KEY和UNIQUE约束   'Column2',表'MyTable'。只允许一个。

为什么强制执行此限制?如何创建具有这些属性的表?我正在使用SQL Server 2008 R2。

3 个答案:

答案 0 :(得分:9)

您在主键约束后错过了逗号。

CREATE TABLE [MyTable]
(
    [Id] [int] IDENTITY,
    [Column1] [int] NOT NULL,
    [Column2] [int] NOT NULL

    CONSTRAINT [PK_MyTable_Id] PRIMARY KEY ([Id]),
    CONSTRAINT [UQ_MyTable_Column1_Column2] UNIQUE ([Column1], [Column2])
)

答案 1 :(得分:3)

CREATE TABLE [MyTable]
(
    [Id] [int] IDENTITY,
    [Column1] [int] NOT NULL,
    [Column2] [int] NOT NULL

    CONSTRAINT [PK_MyTable_Id] PRIMARY KEY ([Id])

)

  ALTER TABLE [MyTable] ADD CONSTRAINT [UQ_MyTable_Column1_Column2] UNIQUE ([Column1], [Column2])

答案 2 :(得分:2)

或者在主键声明和唯一约束声明之间加上逗号:

CREATE TABLE [MyTable]
(
    [Id] [int] IDENTITY,
    [Column1] [int] NOT NULL,
    [Column2] [int] NOT NULL

    CONSTRAINT [PK_MyTable_Id] PRIMARY KEY ([Id]),
    CONSTRAINT [UQ_MyTable_Column1_Column2] UNIQUE ([Column1], [Column2])
)