Antworten:
Sie sollten in der Lage sein, die Funktion row_number () als Spalte in Ihrer Ansicht zu verwenden. Dies funktioniert für Postgres 8.4 oder höher.
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
Dies sollte in den meisten Datenbanken funktionieren, einschließlich SQL Server, Oracle und MySQL.
row_number() OVER() AS "id"
ohne ORDER
über Spalte
row_number
es sich tatsächlich um einen Zufallswert handelt. Sie können sich nicht darauf verlassen, dass es zwischen SELECT
s konsistent ist , insbesondere wenn sich die zugrunde liegenden Daten ändern.
Für ältere Versionen von PostgreSQL (<= 8.3) ist hier eine andere Lösung. In diesem Beispiel verwende ich einen anderen Spaltennamen vid
für "Ansichts-ID".
Erstellen Sie zunächst eine Sequenz. Verwenden CYCLE
Sie diese Option, um eine Schleife zu erstellen, falls Sie das Ende der Sequenz erreichen.
CREATE SEQUENCE myview_vid_seq CYCLE;
Erstellen Sie jetzt eine ANSICHT, die die folgende Sequenz verwendet:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;