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 ORDER
qua cột
row_number
là 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 SELECT
cá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 vid
cho "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;