25 votos

En PostGIS es posible crear una Vista con un número de IDENTIFICACIÓN único?

Al crear una vista en PostGIS es hay alguna forma de añadir un IDENTIFICADOR único para ese punto de vista? Igual que el de "gid" campo de cualquier otro PostGIS mesa?

Edit: lo Siento, debería haber incluido esta en el post original. Estoy usando PostGresql 9.0 y PostGIS 1.5.

Ando

30voto

Swinders Puntos 1042

Usted debe ser capaz de utilizar la función row_number() como una columna en la vista. Esto funciona para Postgres 8.4 o superior.

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

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

6voto

hernan43 Puntos 566

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

En primer lugar, crear una secuencia. Uso CYCLE por lo que se repetirá en el caso de llegar a la final de la secuencia.

CREATE SEQUENCE myview_vid_seq CYCLE;

Ahora, crear una VISTA que utiliza la secuencia:

CREATE OR REPLACE VIEW myview AS 
 SELECT nextval('myview_vid_seq'::regclass) AS vid, mytable.*
 FROM mytable;

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X