[postresql] 기존 테이블에 컬럼 추가 질문 5

by 민규양 [SQL Query] [2023.02.16 09:53:28]


업무 진행 중에 기존 테이블에 새 컬럼을 추가할 일이 생겼습니다.

 

"고객"이라는 테이블에 "MZ_YN(MZ세대 여부)"라는 컬럼을 추가한다고 할 때 기존 컬럼인 "생년월일"의 값을 확인하여 2000년 이전 출생자면 "Y"를, 아닌 경우 "N"으로 값을 설정해야 한다고 가정하면 컬럼 추가 쿼리(ALTER)만으로 해당 요구사항을 충족시킬 수 있을까요? 있다면 어떻게 해야할까요?

불가능하다면 컬럼 추가 후 추가 쿼리실행을 통해 추가한 컬럼에 값을 삽입해줘야 하는지 궁금합니다!

by 우리집아찌 [2023.02.16 10:02:28]

1. 컬럼추가가 필요한지요?

2. 운영중인 db 고 데이터양이 많으면

   a. 다른테이블명으로 같은 내용+ 컬럼 으로 생성후 데이터 이행

   b 테이블 / 인덱스 renmae 하시면 운영시간 중단을 최소화가 가능합니다.

   c. 개발 소스도 같이 수정되면 완료 

3. .그런데 sql만 수정하시면 되는데 굳이 힘든 작업을 하시는지 모르겠네요. 

 


by 민규양 [2023.02.16 10:22:05]

1. 위에서 설명한 상황은 예시입니다. 서비스 기능 추가로 인해 데이터 추가가 필수인 상황입니다.

2. 운영DB 확인해보니 데이터가 약 38만개 정도 되네요. 말씀해주신 방법도 고려해보도록 하겠습니다.

답변 감사합니다.


by 우리집아찌 [2023.02.16 10:37:35]

추가 하자면

데이터 이행은 사전이행 개념으로 가져가셔야 합니다.

 


by 우리집아찌 [2023.02.16 10:38:50]

38만건이면 그냥 개발에서 테스트 하시고 바로 이행해도 될것 같네요.

운영중인 테이블에 컬럼 추가는 문제 생길 여지가 있어서 테이블 이행후 RENAME추천합니다.

 


by 마농 [2023.02.16 11:30:37]
-- 1. 뷰를 이용하는 방안 --
CREATE OR REPLACE VIEW v_cust
IS
SELECT a.*
     , CASE WHEN birth_ymd >= '20000101' THEN 'Y' ELSE 'N' END mz_yn
  FROM t_cust a
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입