2017년 10월 13일 금요일

PostgreSQL OID 확인 방법

종종 oid 를 확인하고 싶을 때가 있다.
(oid 는 tuple 를 구분하는 unique value 이다.)

postgres=# create table t1 (c1 char(20));
CREATE TABLE
postgres=# insert into t1 values ('aaa');
INSERT 0 1
postgres=# insert into t1 values ('bbb');
INSERT 0 1
postgres=# select * from t1;
          c1
----------------------
 aaa
 bbb
(2 rows)

postgres=# select oid,* from t1;
ERROR:  column "oid" does not exist
LINE 1: select oid, * from t1;
               ^
postgres=#

어라? 에러가 뜨네?
분명히 본거 같은데....

postgres=# select oid,relname from pg_class where relname='t1';
  oid  | relname
-------+---------
 24646 | t1
(1 row)

잘 나오는데.... 왜 t1 은 안 나올까....

구글링을 해봤다.
table 을 만들 때, 옵션을 줘야 된단다.

postgres=# create table t2 (c1 char(20)) with oids;
CREATE TABLE
postgres=# insert into t2 values ('aaa');
INSERT 24652 1
postgres=# insert into t2 values ('bbb');
INSERT 24653 1
postgres=# select * from t2;
          c1
----------------------
 aaa
 bbb
(2 rows)

postgres=# select oid,* from t2;
  oid  |          c1
-------+----------------------
 24652 | aaa
 24653 | bbb
(2 rows)

postgres=#

※ oid 는 명시적으로 표기하지 않으면 출력되지 않는다.
그래서 oid 와 모든 column 을 출력하고 싶으면 oid,* 라고 입력해야 한다.



출처
http://www.sqlines.com/postgresql/oid

댓글 없음:

댓글 쓰기

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...