Q. DUAL 테이블은 1열 1행의 데이터를 갖고 있어서 간단한 스칼라 연산에 자주 사용된다.
그런데, 이 DUAL테이블에 INSERT 가 가능하다면, 이후 동작에 문제가 될 것이다.
Oracle에서 이를 허용하고 있을까?
테스트 계정에서 DUAL 테이블에 INSERT INTO를 하면 권한이 없다고 나온다.
그래서 "conn /as sysdba" 로 접속해서 수행해 보니, insert가 되고 row가 생성되었다는 메시지가 출력된다.
하지만 실제 SELECT를 해보면, 하나의 row만 조회된다.
왜 이런 결과가 나타나는지 검색해보았는데,
Oracle 문서에서는 관련 내용을 찾지 못했고, 구루비에서 유사한 실험을 한 것을 찾을 수 있었다.
구루비의 관련 주제 링크: http://www.gurubee.net/lecture/2637
내용을 보면, DUAL 테이블에 데이터는 저장되어 있으나, 조회되지는 않는다는 것이다.
때문에,CTAS로 DUAL테이블의 복제 테이블을 만들면, 추가한 데이터가 조회된다고 한다.
다만, 그 이유까지는 나와있지 않다.
실제로 테이블을 복제해서 조회해 보면 삽입한 데이터가 보인다.
결과로 보아 DUAL 테이블에 대한 select는 특수한 process를 거치는 것으로 보인다.
자세한 이유를 조사해 보고 싶지만, 시간 관계상 다음 기회로 미루고,
일단 이번 실험은 이 정도로 마무리 한다.
[출처] [Oracle] DUAL 테이블에 INSERT가 가능할까?|작성자 밀오
'SQL > Query' 카테고리의 다른 글
오라클(Oracle) 날짜 요일(Week) 구하는 방법 (0) | 2016.02.19 |
---|---|
[Oracle] UPDATE SELECT 해보기 (0) | 2015.12.29 |
Oracle 필드 추가, 수정, 삭제, 코멘트 (0) | 2015.12.29 |
Oracle 테이블 백업 (0) | 2015.12.29 |
sql 마지막 찾기 (0) | 2015.12.11 |
[oracle] 백분율 오차제거 (0) | 2015.11.27 |
[오라클] 함수를 이용하여 간단하게 합계 및 백분율 구하기 (0) | 2015.11.27 |
[SQL] 기본 SQL문 (0) | 2015.02.03 |