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 ORDER
colonna
row_number
è effettivamente un valore casuale. Non puoi dipendere dal fatto che sia coerente tra SELECT
s, 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 vid
per "visualizza ID".
Innanzitutto, crea una sequenza. Usalo in CYCLE
modo 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;