Yanıtlar:
Row_number () işlevini görünümünüzde bir sütun olarak kullanabilmelisiniz. Bu Postgres 8.4 veya üstü için çalışıyor.
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
Bu, SQL Server, Oracle ve MySQL dahil olmak üzere çoğu veritabanında çalışmalıdır.
row_number() OVER() AS "id"
olmadan da yapabilirsiniz ORDER
row_number
. SELECT
Özellikle altta yatan veriler değiştiğinde, s arasında tutarlı olmasına güvenemezsiniz .
PostgreSQL'in eski sürümleri için (<= 8.3), işte başka bir çözüm. Bu örnekte, vid
"görünüm kimliği" için başka bir sütun adı kullanıyorum .
İlk önce bir dizi oluşturun. CYCLE
Dizinin sonuna ulaştığınızda dönecek şekilde kullanın .
CREATE SEQUENCE myview_vid_seq CYCLE;
Şimdi, diziyi kullanan bir GÖRÜNÜM oluşturun:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;