insert into table_a(item, type, gubun, category, qty1, qty2)
select 'item_A', 'A', 'Plan', 'Input', 10, 20 from dual
이런 식으로 insert into select 구문으로 대상 테이블에 데이터를 입력을 합니다.
그런데 지금 운용중인 DB는 운영 DB와 개발DB가 있는데요 (DB link명은 DEV로 합니다)
운영 DB에서
insert into table_a@DEV(item, type, gubun, category, qty1, qty2)
select 'item_A', 'A', 'Plan', 'Input', 10, 20 from dual
으로 하면 0row가 insert 됩니다.
insert into table_a(item, type, gubun, category, qty1, qty2)
select 'item_A', 'A', 'Plan', 'Input', 10, 20 from dual
하지만 개발DB에서 이렇게 하면 1row insert가 됩니다.
왜 운영과 개발에서 insert into select가 다른지 전혀 모르겠습니다.
개발과 운영에서 이렇한 쿼리가 다르게 동작한적은 없습니다. db link 관련 설정도 없구요
(지금까지 동일한 insert into select에서는 동일하게 나왔습니다.)
왜 이러한 결과가 나오는지 혹시 아시는분 있으시면 답변 해주시면 감사합니다.
이상하네요;
@DEV -> 실제 테스트 서버가 아닌 다른 서버를 바라보고 있지 않나 생각이 듭니다만..
개발 서버에서 table_a테이블에 특정 자료를 인서트하시고 운영에서 select 했을 때 잘 나오나 확인해보세요.
여튼 이상하군요;
실제로 INSERT 할때 사용하는 문장이 "select 'item_A', 'A', 'Plan', 'Input', 10, 20 from dual" 라면 본 적이 없네요.
하지만 실제 테이블을 이용하고 있다면 운영db에서 실행시켰을 때 SELECT 문장에도 DBLINK를 넣어 주어야 합니다.
운영에서 실행되는
"insert into table_a@DEV(item, type, gubun, category, qty1, qty2)
select 'item_A', 'A', 'Plan', 'Input', 10, 20 from table_b" 이 문장은 운영DB에서 select해서 개발DB에 insert 한다는 뜻이기 때문에
개발에서 실행되는
"insert into table_a(item, type, gubun, category, qty1, qty2)
select 'item_A', 'A', 'Plan', 'Input', 10, 20 from table_b" 문장과는 다른 뜻이 됩니다.