답변:
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을 포함한 대부분의 데이터베이스에서 작동합니다.
row_number() OVER() AS "id"
없이 할 수 있습니다 ORDER
row_number
입니다. SELECT
특히 기본 데이터가 변경 될 때 사이에 일관성이 있는지에 의존 할 수 없습니다 .
이전 버전의 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;