Risposte:
Dovresti essere in grado di utilizzare la funzione row_number () come colonna nella tua vista. Questo funziona con Postgres 8.4 o versioni successive.
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
Questo dovrebbe funzionare nella maggior parte dei database, inclusi SQL Server, Oracle e MySQL.
row_number() OVER() AS "id"meno della ORDERcolonna
row_numberè effettivamente un valore casuale. Non puoi dipendere dal fatto che sia coerente tra SELECTs, in particolare quando i dati sottostanti cambiano.
Per le versioni precedenti di PostgreSQL (<= 8.3), ecco un'altra soluzione. In questo esempio, utilizzo un altro nome di colonna vidper "visualizza ID".
Innanzitutto, crea una sequenza. Usalo in CYCLEmodo che si chiuda nel caso in cui raggiungi la fine della sequenza.
CREATE SEQUENCE myview_vid_seq CYCLE;
Ora, crea una VISTA che utilizza la sequenza:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;