Відповіді:
Ви повинні мати можливість використовувати функцію 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
s, особливо коли змінюються основні дані.
Для старих версій PostgreSQL (<= 8,3), ось ще одне рішення. У цьому прикладі я використовую іншу назву стовпця vid
для "ідентифікатора перегляду".
Спочатку створіть послідовність. Використовуйте CYCLE
так, щоб він зациклювався на випадок, якщо ви досягнете кінця послідовності.
CREATE SEQUENCE myview_vid_seq CYCLE;
Тепер створіть ВИДІЛ, що використовує послідовність:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;