디비링크에 따라서 같은 데이터가 서로 다르게 인서트가 됩니다. 0 2 1,670

by 데지아빠 [2014.12.08 14:58:13]


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에서는 동일하게 나왔습니다.)

왜 이러한 결과가 나오는지 혹시 아시는분 있으시면 답변 해주시면 감사합니다.

 

 

 

 

by jkson [2014.12.08 17:50:02]

이상하네요;

@DEV -> 실제 테스트 서버가 아닌 다른 서버를 바라보고 있지 않나 생각이 듭니다만..

개발 서버에서  table_a테이블에 특정 자료를 인서트하시고 운영에서 select 했을 때 잘 나오나 확인해보세요.

여튼 이상하군요;


by lovekod2hj [2014.12.09 17:33:07]

실제로 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" 문장과는 다른 뜻이 됩니다.

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