Câu trả lời:
Bạn sẽ có thể sử dụng hàm row_number () làm cột trong chế độ xem của mình. Điều này hoạt động cho Postgres 8.4 trở lên.
http://www.postgresql.org/docs/civerse/static/fifts-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
Điều này sẽ hoạt động trong hầu hết các cơ sở dữ liệu bao gồm SQL Server, Oracle và MySQL.
row_number() OVER() AS "id"mà không cần ORDERqua cột
row_numberlà một giá trị ngẫu nhiên. Bạn không thể phụ thuộc vào sự thống nhất giữa SELECTcác s, đặc biệt khi dữ liệu cơ bản thay đổi.
Đối với các phiên bản cũ hơn của PostgreSQL (<= 8.3), đây là một giải pháp khác. Trong ví dụ này, tôi sử dụng tên cột khác vidcho "ID xem".
Đầu tiên, tạo một chuỗi. Sử dụng CYCLEđể nó sẽ lặp trong trường hợp bạn đạt đến cuối chuỗi.
CREATE SEQUENCE myview_vid_seq CYCLE;
Bây giờ, tạo VIEW sử dụng chuỗi:
CREATE OR REPLACE VIEW myview AS
SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
FROM mytable;