개발 창고/Database

[MSSQL] How to create a blank, non-inputable column.

로이제로 2024. 1. 2. 22:00
반응형

How to create a blank, non-inputable column.

 테이블을 생성하다 보면 NOT NULL 제약조건을 이용하여 컬럼에 NULL이 입력 불가하도록 생성할 수 있습니다. 하지만, 이는 공란까지 입력 불가한 상태는 아니기 때문에 반드시 입력이 필요한 경우에 NOT NULL 만으로 해결되지 않는 경우가 발생합니다.

 

만약 아래와 같은 NOT NULL인 COL1을 갖는 TEMPTABLE이 있다고 가정한다면

CREATE TABLE TEMPTABLE (
	COL1 NVARCHAR(10) NOT NULL
)

 

여기에 NULL 을 입력하는 경우 아래와 같은 오류가 발생합니다.

INSERT INTO TEMPTABLE (COL1) VALUES (NULL)

NULL 입력 오류 발생

하지만 공란을 입력하면 입력되는 것을 확인할 수 있습니다.

# 공란 입력
INSERT INTO TEMPTABLE (COL1) VALUES ('')

# 결과 확인
SELECT *
  FROM TEMPTABLE

 

입력 성공 결과
공란을 포함한 한 개 ROW 결과

 

공란 제한 제약조건 추가

# 기존에 저장된 데이터 중 공란을 포함하는 테이블 처리
# 삭제 또는 공란을 다른 문자로 변환
UPDATE TEMPTABLE
   SET COL1 = 'N/A'
 WHERE COL1 = ''

# 제약조건 추가
ALTER TABLE TEMPTABLE WITH CHECK 
ADD CONSTRAINT CK_TEMPTABLE_COL1 CHECK ((COL1<>N''))

# 테스트) 공란 입력
INSERT INTO TEMPTABLE (COL1) VALUES ('')

공란 처리 결과
제약조건 추가 결과
공란 입력 시 오류 발생

반응형