PostGIS에서 뷰를 만들 때 해당 뷰에 고유 ID를 추가 할 수있는 방법이 있습니까? 다른 PostGIS 테이블의 “gid”필드처럼?
편집 : 원본 게시물에 이것을 포함시켜야합니다. PostGresql 9.0 및 PostGIS 1.5를 사용하고 있습니다.
안도
답변
row_number () 함수를 뷰의 열로 사용할 수 있어야합니다. 이것은 Postgres 8.4 이상에서 작동합니다.
http://www.postgresql.org/docs/current/static/functions-window.html
SELECT * FROM
( SELECT
ROW_NUMBER() OVER (ORDER BY column_to_sort_by ASC) AS ROW_NUMBER,
Col1, Col2
FROM table_name
) myview_name
이것은 SQL Server, Oracle 및 MySQL을 포함한 대부분의 데이터베이스에서 작동합니다.
답변
이전 버전의 PostgreSQL (<= 8.3)의 경우 다른 솔루션이 있습니다. 이 예에서는 vid
“보기 ID”에 다른 열 이름 을 사용 합니다.
먼저 시퀀스를 만듭니다. CYCLE
시퀀스의 끝에 도달하면 루프가 반복되도록 사용하십시오 .
CREATE SEQUENCE myview_vid_seq CYCLE;
이제 시퀀스를 사용하는 VIEW를 작성하십시오.
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;