Уникальное ограничение на несколько столбцов

CREATE TABLE [dbo].[user](
        [userID] [int] IDENTITY(1,1) NOT NULL,
        [fcode] [int] NULL,
        [scode] [int] NULL,
        [dcode] [int] NULL,
        [name] [nvarchar](50) NULL,
        [address] [nvarchar](50) NULL,
     CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED 
    (
        [userID] ASC
    )
    ) ON [PRIMARY]

    GO

Как добавить уникальное ограничение для столбцов fcode, scode, dcode с управлением t-sql и / или studio ? fcode, scode, dcode должны быть уникальными вместе.

240
задан Tony L. 23 August 2016 в 11:26
поделиться

2 ответа

Используя определение ограничения при создании таблицы, вы можете указать одно или несколько ограничений, охватывающих несколько столбцов. Синтаксис, упрощенный из документации technet , имеет форму:

CONSTRAINT constraint_name UNIQUE [ CLUSTERED | NONCLUSTERED ] 
(
    column [ ASC | DESC ] [ ,...n ]
)

Следовательно, определение таблицы результатов будет следующим:

CREATE TABLE [dbo].[user](
    [userID] [int] IDENTITY(1,1) NOT NULL,
    [fcode] [int] NULL,
    [scode] [int] NULL,
    [dcode] [int] NULL,
    [name] [nvarchar](50) NULL,
    [address] [nvarchar](50) NULL,
    CONSTRAINT [PK_user_1] PRIMARY KEY CLUSTERED 
    (
        [userID] ASC
    ),
    CONSTRAINT [UQ_codes] UNIQUE NONCLUSTERED
    (
        [fcode], [scode], [dcode]
    )
) ON [PRIMARY]
280
ответ дан 23 November 2019 в 03:17
поделиться

Если таблица уже создана в базе данных, то вы можете добавить уникальное ограничение позже, используя этот SQL-запрос:

ALTER TABLE dbo.User
  ADD CONSTRAINT ucCodes UNIQUE (fcode, scode, dcode)
397
ответ дан 23 November 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: