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
및 / 또는 management studio
? fcode, scode, dcode
함께 고유해야합니다.
답변
테이블 작성시 제한 조건 정의를 사용하여 여러 열에 걸쳐있는 하나 이상의 제한 조건을 지정할 수 있습니다. 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]
답변
테이블이 데이터베이스에서 이미 작성된 경우 다음 SQL 조회를 사용하여 나중에 고유 제한 조건을 추가 할 수 있습니다.
ALTER TABLE dbo.User
ADD CONSTRAINT ucCodes UNIQUE (fcode, scode, dcode)
답변
이것은 GUI에서도 가능합니다. 다음은 기존 테이블에 다중 열 고유 제한 조건을 추가하는 예입니다.
- 표 아래에서 색인 -> 새 색인 클릭 / 호버 -> 비 클러스터형 색인 클릭 …을 마우스 오른쪽 단추로 클릭하십시오 .
- 기본 색인 이름이 제공되지만 변경할 수도 있습니다. 확인 고유의 체크 박스를 클릭 추가 … 버튼을
- 포함하려는 열을 확인하십시오.
각 창에서 확인 을 클릭 하면 완료됩니다.
답변
USE [TSQL2012]
GO
/****** Object: Table [dbo].[Table_1] Script Date: 11/22/2015 12:45:47 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table_1](
[seq] [bigint] IDENTITY(1,1) NOT NULL,
[ID] [int] NOT NULL,
[name] [nvarchar](50) NULL,
[cat] [nvarchar](50) NULL,
CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
CONSTRAINT [IX_Table_1] UNIQUE NONCLUSTERED
(
[name] ASC,
[cat] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO