테이블 데이터 복사
A 테이블
ID VARCHAR2 (63) NOT NULL,
CONTENT VARCHAR2 (1000) NOT NULL,
CRE_DATE DATE NOT NULL,
UPD_DATE DATE NOT NULL,
TYPE VARCHAR2 (5) NOT NULL,
USER_ID VARCHAR2 (63),
GUBUN CHAR (1),
ETC VARCHAR2 (10),
DOMAIN_ID VARCHAR2 (63) DEFAULT 'DEFAULT' NOT NULL
A 테이블의 데이터
ID |
CONTENT |
CRE_DATE |
UPD_DATE |
TYPE |
USER_ID |
GUBUN |
ETC |
DOMAIN_ID |
EX00001 |
내용 |
2013/04/30 |
2013/04/30 |
ERROR |
LUCKY |
U |
N |
DOMAIN1 |
EX00002 |
내용 | 2013/04/30 |
2013/04/30 |
ERROR |
LUCKY |
U |
N |
DOMAIN2 |
... |
... |
... |
... |
... |
... |
... |
... |
.. |
EX00100 |
내용 |
2013/04/30 |
2013/04/30 |
ERROR |
LUCKY |
U |
N |
DOMAIN1 |
위와 같은 상황에서
A 테이블의 데이터 중에 DOMAIN_ID 가 'DOMAIN1' 인 데이터를 B 테이블을 새로 만들어서 복사하고자 할 경우
create table B
as
select
ID, CONTENT, CRE_DATE, UPD_DATE, TYPE, USER_ID, GUBUN, ETC, DOMAIN_ID
from A where domain_id = 'DOMAIN1'
구문을 사용하면 된다.
이걸 이용해서, A 테이블에서 DOMAIN_ID 가 'DOMAIN1' 인 데이터에 대해서
DOMAIN_ID 를 'DOMAIN2' 로 A 테이블에 복사하고자 할 경우에는
1. DOMAIN1 데이터를 B 테이블에 임시 복사
2. B 테이블의 데이터를 A 테이블에 DOMAIN2 로 변경해서 복사
를 하면 된다.
QUERY 는 아래처럼~
create table B as select * from a where domain_id = 'DOMAIN1';
insert into A values(id, content, cre_date, upd_date, type, user_id, gubun, etc, domain_id)
select id, content, sysdate, sysdate, type, user_id, gubun, etc, 'DOMAIN2' from B;
==> 더 간단하게는... 아래와 같이~
insert into A values(id, content, cre_date, upd_date, type, user_id, gubun, etc, domain_id)
select id, content, sysdate, sysdate, type, user_id, gubun, etc, 'DOMAIN2' from A where domain_id = 'DOMAIN1';