Réponses:
Vous devriez pouvoir utiliser la fonction row_number () comme colonne dans votre vue. Cela fonctionne pour Postgres 8.4 ou supérieur.
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
Cela devrait fonctionner dans la plupart des bases de données, y compris SQL Server, Oracle et MySQL.
row_number() OVER() AS "id"
passer de ORDER
la colonne
row_number
une valeur aléatoire. Vous ne pouvez pas dépendre de sa cohérence entre les SELECT
s, en particulier lorsque les données sous-jacentes changent.
Pour les anciennes versions de PostgreSQL (<= 8.3), voici une autre solution. Dans cet exemple, j'utilise un autre nom de colonne vid
pour "afficher l'ID".
Créez d'abord une séquence. Utilisez-le CYCLE
pour qu'il se boucle si vous atteignez la fin de la séquence.
CREATE SEQUENCE myview_vid_seq CYCLE;
Maintenant, créez une VUE qui utilise la séquence:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;