PostgreSQL 에 오라클의 rowid 가상 컬럼에 해당하는게 무엇일가요?
바로 CTID 요놈입니다.
CTID 는 테이블 내부 행 버전의 물리적 위치를 나타냅니다. 오라클의 ROWID 처럼 행을 빠르게 찾기 위해 사용할 수 있지만 행 CTID 값은 지속성을 가지고 있지 않으므로, 값이 바뀔수 있으므로 주의해야 합니다.
아래는 CTID 가상 컬럼을 조회한 예입니다.
#SQL> select ctid, ename from emp;
ctid | ename
--------+--------
(0,1) | SMITH
(0,2) | ALLEN
(0,3) | WARD
(0,4) | JONES
(0,5) | MARTIN
(0,6) | BLAKE
(0,7) | CLARK
(0,8) | SCOTT
(0,9) | KING
(0,10) | TURNER
(0,11) | ADAMS
(0,12) | JAMES
(0,13) | FORD
(0,14) | MILLER
(14 rows)
오라클에서 임의의 행 하나를 삭제하는
#SQL> DELETE EMP WHERE ROWMUM=1
쿼리를 PostgreSQL 에서 어떻게 구현할수 있을까요?
#SQL> DELETE FROM EMP LIMIT 1 아쉽게도 이렇게는 안됩니다.(syntax error)
이때 CTID 를 활용할수 있습니다. 아래처럼.
DELETE FROM EMP WHERE CTID IN (SELECT CTID FROM EMP LIMIT 1);
'PostgeSQL' 카테고리의 다른 글
[PostgreSQL] PostgreSQL 8.3.3 문서 사이트 (0) | 2014.02.12 |
---|---|
[PostgreSQL] libpq 를 이용한 어플리케이션 작성 (0) | 2014.02.12 |
[PostgreSQL] CSV 파일( Excel 파일 ) PostgreSQL DB 에 입력하는 방법 (2) | 2014.02.06 |
[PostgreSQL] 데이터타입 및 사용법 사이트 (0) | 2014.02.06 |
[PostgreSQL] SUB QUERY (0) | 2014.02.05 |