En PostGIS, ¿es posible crear una Vista con una ID única?

24

Cuando creo una vista en PostGIS, ¿hay alguna manera de agregar una ID única a esa vista? Al igual que el campo "gid" en cualquier otra tabla de PostGIS?

Editar: Lo siento, debería haber incluido esto en la publicación original. Estoy usando PostGresql 9.0 y PostGIS 1.5.

Ando

    
pregunta Ando 15.07.2011 - 10:22

2 respuestas

28

Debería poder usar la función row_number () como una columna en su vista. Esto funciona para Postgres 8.4 o superior.

enlace

SELECT * FROM
( SELECT
    ROW_NUMBER() OVER (ORDER BY column_to_sort_by ASC) AS ROW_NUMBER,
    Col1, Col2
  FROM table_name
) myview_name

Esto debería funcionar en la mayoría de las bases de datos, incluyendo SQL Server, Oracle y MySQL.

    
respondido por el geographika 15.07.2011 - 11:36
5

Para versiones anteriores de PostgreSQL (< = 8.3), aquí hay otra solución. En este ejemplo, uso otro nombre de columna vid para "ver ID".

Primero, crea una secuencia. Use CYCLE para que se repita en el evento en el que llegue al final de la secuencia.

CREATE SEQUENCE myview_vid_seq CYCLE;

Ahora, crea una VISTA que use la secuencia:

CREATE OR REPLACE VIEW myview AS 
 SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
 FROM mytable;
    
respondido por el Mike T 17.07.2011 - 01:44

Lea otras preguntas en las etiquetas