반응형
체크조건을 통한 무결성 제한방법에 대하여 알아보도록 하겠습니다. 특정필드값에 범위를 주거나 아니면 정해진 값만넣도록 제한을 걸고 싶은경우가 있습니다. 이때 코드테이블을 생성하여 외래키를 걸어서 하는경우도 있지만 별도 테이블 없이 체크조건제약을 통하여 입력값을 제한하여 원하는 입력값만 받을수 있습니다.
먼저 아래와 같이 USER라는 테이블을 만들고 Area필드에 수도권(경기,인천,서울)에 대한 값만 넣을 수 있도록 제한을 걸어보도록 하겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
CREATE TABLE [dbo].[USER](
[ID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[Name] [nchar](10) NULL,
[Area] [nvarchar](50) NULL,
[Description] [nchar](10) NULL,
[TelNo] [nchar](10) NULL,
[CellPhone] [nchar](10) NULL,
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 = ON) ON [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 ('서울','경기','인천'))
|
데이터를 넣어보도록 하겠습니다. 다른지역명으로 데이터를 넣을경우 아래와 같이 제약조건이 걸려서 데이터가 저장시 오류가 나는것을 확인할수 있습니다.
제약조건 생성후 관리툴에서 제약조건 항목을 보면 어떤값이 제약이 걸려있는지 확인할수 있습니다.
'프로그래밍 > DB' 카테고리의 다른 글
[DB] MSSQL DB접속포트 두개이상 지정하기 (다중포트사용) (0) | 2020.11.15 |
---|---|
[DB] MSSQL 반올림,올림,버림 방법(ROUND,CELLING,FLOOR) (0) | 2020.11.06 |
[DB] MSSQL 테이블정보변경시 "변경 내용을 저장할수 없습니다." 에러발생 해결방법 (0) | 2020.11.02 |
[DB] MSSQL 최대메모리 설정하기 (0) | 2020.10.27 |
[DB] MSSQL DB트랜잭션 복제방법 (0) | 2020.10.26 |