Respuestas:
Debería poder usar la función row_number () como una columna en su vista. Esto funciona para Postgres 8.4 o superior.
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
Esto debería funcionar en la mayoría de las bases de datos, incluidos SQL Server, Oracle y MySQL.
row_number() OVER() AS "id"prescindir de ORDERmás de la columna
row_numberque efectivamente es un valor aleatorio. No puede depender de que sea coherente entre SELECTs, especialmente cuando cambian los datos subyacentes.
Para versiones anteriores de PostgreSQL (<= 8.3), aquí hay otra solución. En este ejemplo, uso otro nombre de columna vidpara "ver ID".
Primero, crea una secuencia. Úselo CYCLEpara que se repita en caso de que llegue al final de la secuencia.
CREATE SEQUENCE myview_vid_seq CYCLE;
Ahora, cree una VISTA que use la secuencia:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;