Odpowiedzi:
Powinieneś być w stanie użyć funkcji row_number () jako kolumny w twoim widoku. Działa to dla Postgres 8.4 lub nowszego.
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
Powinno to działać w większości baz danych, w tym SQL Server, Oracle i MySQL.
row_number() OVER() AS "id"
bez ORDER
kolumny
row_number
jest to w rzeczywistości losowa wartość. Nie można polegać na tym, że jest on spójny między SELECT
s, szczególnie w przypadku zmiany danych bazowych.
Dla starszych wersji PostgreSQL (<= 8,3), oto inne rozwiązanie. W tym przykładzie używam innej nazwy kolumny vid
dla „view ID”.
Najpierw utwórz sekwencję. Użyj, CYCLE
aby zapętlał się, gdy dojdziesz do końca sekwencji.
CREATE SEQUENCE myview_vid_seq CYCLE;
Teraz utwórz WIDOK wykorzystujący sekwencję:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;