컬럼 추가와 디폴트값 > 온라인강의

본문 바로가기
 
 
 
오늘 695
어제 1,481
최대 2,454
전체 3,205,417
비즈니스의 시작 비즈명함 ~ 가격, 품질, 배송 3가지 만족을 드리는 비즈명함 / 즉석명함 / 급행서비스 / 서울 전지역 수도권일부 3시간배송

온라인강좌 홈 > 온라인강좌 > 온라인강좌

Oracle | 컬럼 추가와 디폴트값

페이지 정보

작성일2014-01-09 06:01 조회4,245회 댓글0건

본문

기존 테이블에 컬럼을 추가할 때 디폴트 값을 지정하면 기존 데이터는 건드리지 않고 새로 추가되는 데이터에 대해서만 디폴드 값이 적용되는 줄 알고 있었다. 그런데 오늘 우연히 작업을 하다가 그동안 잘못 알고 있었다는 것을 알게 되었다. 따라서 다음 두 작업은 완전히 다르게 진행된다.

1. 컬럼 추가시 default 값을 지정하는 경우
alter table t add(c1 char(1) default 'X');

2. 컬럼을 추가한 다음 default 값을 지정하는 경우
alter table t add(c1 char(1));
alter table t modify (c1 default 'X');

1의 경우 컬럼이 추가되면서 기존 레코드에 대해서도 추가된 컬럼에 디폴트 값을 설정하므로, 모든 레코드를 업데이트하는 것과 마찬가지이며 시간 오래 걸린다. 이 시간동안 다른 세션에서 테이블에 DML을 시도하면 해당 세션은 library cache lock 대기상태가 된다.

2와 같이 컬럼 추가와 디폴트 값을 따로 작업할 경우 기존 레코드에 대한 값은 변경되지 않는다. 따라서 기존 레코드에 대해 새로 추가된 컬럼의 값은 null이 된다. 새로 insert하는 레코드부터 디폴트 값이 적용된다.

매뉴얼(SQL Reference)에도 다음과 같이 명시되어 있다.

    DEFAULT
    ...If you are adding a new column to the table and specify the default value, then the database inserts the default column value into all rows of the table.

따라서 컬럼을 추가할 때 디폴드 값을 함께 주는 것은 주의해야 겠다. 트랜잭션이 빈번히 발생하는 테이블에 컬럼을 추가할 때 디폴드 값을 주어 컬럼을 추가할 경우, 새로 추가된 컬럼에 디폴드 값을 설정하느라 테이블이 상당 시간동안 접근 불가능 상태가 될 수 있기 때문이다. 이렇게 된다면 해당 테이블에 접근하는 트랜잭션은 컬럼 추가 작업이 끝날 때까지 모두 대기 상태에 빠지거나 timeout으로 실패하게 될 것이다.


자료인용
http://ntalbs.tistory.com/7
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.


목록

Total 32건 1 페이지
온라인강의 목록
번호 제목
32
31
30
29
Oracle [ClassASP] 연동하기 (write.2015-02-26)인기글  Hit.2956
28
열람중
Oracle 컬럼 추가와 디폴트값 (write.2014-01-09)인기글  Hit.4246
26
Oracle PK(primary key) 추가/삭제 (write.2014-01-09)인기글  Hit.4642
25
Oracle 에러 메세지 정리 (write.2014-01-09)인기글  Hit.11265
24
Oracle 테이블 복사/백업 (write.2014-01-08)인기글  Hit.3619
23
22
21
20
19
Oracle 조인및 서브쿼리 (write.2013-10-06)인기글  Hit.4702
18
Oracle VIEW 퀴리 생성 및 사용하기 (write.2013-10-07)인기글  Hit.3692
17
Oracle TOP 10개만 가져오는 쿼리문 (write.2013-10-06)인기글  Hit.3869
16
15
14
Oracle Dual 테이블, from dual 이란? (write.2013-11-07)인기글  Hit.3716
13
Oracle PK와 유니크 인덱스의 차이점 (write.2013-10-25)인기글  Hit.4797
12
11
10
Oracle 버퍼캐쉬 비우기 (write.2013-10-24)인기글  Hit.3613
9
Oracle LIKE 연산자 (write.2013-10-06)인기글  Hit.3056
8
Oracle Oracle Sql Develper 툴 설치하기 (update.2015-06-26)인기글  Hit.5726
게시물 검색
 
 
상호: 해피정닷컴 대표:정창용 사업자등록번호:119-05-36414 (08394) 서울시 구로구 디지털로 242 한화비즈메트로1차 1502호
전화: 070-7600-3500 팩스:02-865-3528 개인정보관리:정창용 mail@happyjung.com 에스크로확인
개인정보취급방침
COPYRIGHT 2001~2017 해피정닷컴. All rights reserved. 부가통신사업신고:서울체신청-1217 통신판매신고:2014-서울구로-0074
 
모바일 버전으로 보기