프로그래밍/DB

[DB] MSSQL 무결성제약조건. 체크조건을 통한 무결성제한

ss-pro 2020. 11. 2. 00:48
반응형

체크조건을 통한 무결성 제한방법에 대하여 알아보도록 하겠습니다.  특정필드값에 범위를 주거나 아니면 정해진 값만넣도록 제한을 걸고 싶은경우가 있습니다. 이때 코드테이블을 생성하여 외래키를 걸어서 하는경우도 있지만 별도 테이블 없이 체크조건제약을 통하여 입력값을 제한하여 원하는 입력값만 받을수 있습니다. 

먼저 아래와 같이 USER라는 테이블을 만들고 Area필드에 수도권(경기,인천,서울)에 대한 값만 넣을 수 있도록 제한을 걸어보도록 하겠습니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE [dbo].[USER](
    [ID] [int] IDENTITY(1,1NOT FOR REPLICATION NOT NULL,
    [Name] [nchar](10NULL,
   [Area] [nvarchar](50NULL,
    [Description] [nchar](10NULL,
    [TelNo] [nchar](10NULL,
    [CellPhone] [nchar](10NULL,
 CONSTRAINT [PK_USER] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ONON [PRIMARY]
ON [PRIMARY]
 
GO
cs

이제 제약 조건을 걸어보도록 하겠습니다. area_chk_range라는 제약조건명으로 area값이 수도권인 서울,경기,인천만 입력되도록 제약조건을 걸었습니다.

1
2
3
ALTER TABLE [dbo].[USER]  WITH NOCHECK 
ADD CONSTRAINT area_chk_range CHECK (area in ('서울','경기','인천'))

데이터를 넣어보도록 하겠습니다. 다른지역명으로 데이터를 넣을경우 아래와 같이 제약조건이 걸려서 데이터가 저장시 오류가 나는것을 확인할수 있습니다. 

제약조건 생성후 관리툴에서 제약조건 항목을 보면 어떤값이 제약이 걸려있는지 확인할수 있습니다.