Jawaban:
Anda harus dapat menggunakan fungsi row_number () sebagai kolom dalam tampilan Anda. Ini berfungsi untuk Postgres 8.4 atau lebih tinggi.
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
Ini harus bekerja di sebagian besar database termasuk SQL Server, Oracle, dan MySQL.
row_number() OVER() AS "id"
tanpa ORDER
kolom
row_number
juga nilai acak. Anda tidak bisa bergantung padanya konsisten di antara SELECT
s, terutama ketika data yang mendasarinya berubah.
Untuk PostgreSQL versi lama (<= 8.3), berikut ini adalah solusi lain. Dalam contoh ini, saya menggunakan nama kolom lain vid
untuk "view ID".
Pertama, buat urutan. Gunakan CYCLE
sehingga itu akan berulang jika Anda mencapai akhir urutan.
CREATE SEQUENCE myview_vid_seq CYCLE;
Sekarang, buat VIEW yang menggunakan urutan:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;