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 ORDER
más de la columna
row_number
que efectivamente es un valor aleatorio. No puede depender de que sea coherente entre SELECT
s, 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 vid
para "ver ID".
Primero, crea una secuencia. Úselo CYCLE
para 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;