LTER TABLE 문을 이용해 Column을 제거 하거나 수정 할 때 제약 조건 때문에 쉽게 되지 않는 경우가 있다.
예를 들어 삭제 하고자 하는 Column이 not null 에 default 값이 설정 되어 있을 경우
ALTER TABLE [테이블 명] DROP COLUMN [컬룸 명]
명령을 실행 시킬 경우 오류 메세지가 뜬다.
이럴 경우에는 삭제 하고자 하는 COLUMN에 걸려 있는 제약 조건을 삭제 한 뒤 COLUMN을 삭제 해야 한다.
제약 조건 삭제는
ALTER TABLE [테이블 명] Drop constraint [제약 조건명]
명령을 통해 삭제가 가능 하다.
제약 조건명 확인은
exec sp_help [테이블명]
exec sp_help ma_education;
명령을 통해 확인이 가능 하다.
[constraint_name] 이 바로 Default 값에 대한 제약 조건 명 이다.
자 그렇다면 Column 삭제시 마다 항상 제약조건명을 확인하고 삭제 해야 하는가???
너무 불편 하다. 그렇다면 제약 조건명을 임의로 줄 수는 없는가?? 가능 하다.
필자의 경우 수시로 테이블에 Column을 추가 하고 삭제 하는 작업이 필요 했기 때문에 ALTER 구문을 통해 Column을 추가시 제약 조건명 까지 추가 하기로 했다.
그 방법은
ALTER Table [테이블 명] Add Column [컬룸 명] [데이터 타입] constraint [임의 제약 조건명] default [기본 값] not null
주의) 제약 조건명은 반드시 중복되지 않도록 해야 한다.
이런 식으로 처리 하였다 여기서 임의 제약 조건명은 위의 Default 셋팅에 대한 제약 조건 이다.
이렇게 명시적으로 제약 조건명을 준다면 제약 조건 삭제시에도 용이 하니 알아 두면 좋다.
MS-SQL 테이블 컬럼 조작(추가,수정,삭제)
컬럼 추가
ALTER TABLE ${TALBE_NAME} ADD ${COLUMN_NAME} ${COLUMN_TYPE}
- NULL 허용
- Example
ALTER TABLE BOARD ADD SECURITY CHAR(1) NULL;
- Example
- NULL 허용하지 않음(기본값 설정)
- Exxample
ALTER TABLE BOARD ADD SECURITY CHAR(1) NOT NULL CONSTRAINT DF_ADDR DEFAULT 'N';
- Exxample
컬럼 수정
ALTER TABLE ${TABLE_NAME} ALTER COLUMN ${COLUMN_NAME} ${COLUMN_TYPE}
- Example
ALTER TABLE BOARD ALTER COLUMN SECURITY VARCHAR(1) NULL;
컬럼명 수정
EXEC SP_RENAME '${TABLE_NAME.[OLD_COLUMN_NAME]}', '${NEW_COLUMN_NAME}', 'COLUMN'
- Example
EXEC SP_RENAME 'BOARD.[SECURITY]', 'NEW_SECURITY', 'COLUMN';
컬럼 삭제
ALTER TABLE ${TABLE_NAME} DROP COLUMN ${COLUMN_NAME}
- Example
ALTER TABLE BOARD DROP COLUMN SECURITY;
댓글 ( 4)
댓글 남기기