[Gvsig_usuarios] Columna serial

Francisco Puga fpuga en icarto.es
Lun Oct 8 12:17:14 CEST 2018


Casi seguro que en algún momento has insertado datos en la tabla fijando a
mano el gid.

Si tienes una tabla tipo:

CREATE TABLE foo (
    gid serial primary key,
    name text
);

Y haces esto:

INSERT INTO foo (name) VALUES ('Alice');

La secuencia correrá y todo irá bien. En la tabla habrá un (1, 'Alice')

Si haces esto:
INSERT INTO foo(gid, name) VALUES (2, 'Bob');

La secuencia no corre, asume que el siguiente valor seguirá siendo un dos,
y cuando hagas otro INSERT INTO foo (name) VALUES ('Carl');, postgres
intentará asignar un 2 en gid que ya existe.

La solución es setear el valor de la secuencia a mano. Una forma sencilla
es:

SELECT max(gid) FROM foo; -- anotas el valor devuelve y le sumas 1
ALTER SEQUENCE foo_gid_seq RESTART WITH <el valor anterior>

foo_gid_seq es el nombre de la secuencia, lo puedes ver con un \d foo

yeli <yeliarias en gmail.com> escreveu no dia quinta, 4/10/2018 à(s) 21:28:

> Buenas tardes grupo tengo un pequeño bloqueo, estoy insertando desde gvSIG
> 2.4 unos datos a una tabla ya existente que esta en mi base de datos
> postgresql, tengo exactamente las mismas columnas , en la tabla que tengo
> en mi base de datos el id es serial y primary key, cuando intento inserta
> como es lógico me da un error por datos duplicados (la tabla de la base de
> datos postgresql ya tiene datos), que hago para que me inserte los datos
> sin que me de error y la columna se siga autoincrementando sin problemas
> _______________________________________________
> gvSIG_usuarios mailing list
> gvSIG_usuarios en listserv.gva.es
>
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
>
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios
>


-- 
Francisco Puga
iCarto | Innovación, Cooperación, Cartografía y Territorio S.L.
http://www.icarto.es/

c/ Rafael Alberti nº 13 – 1º D
15008 A Coruña
Galicia (Spain)
+34 881927808

Este correo electrónico contiene información estrictamente confidencial y
es de uso exclusivo del destinatario, quedando prohibida a cualquier otra
persona su revelación, copia, distribución, o el ejercicio de cualquier
acción relativa a su contenido. Si ha recibido este mensaje por error, por
favor conteste a su remitente mediante correo electrónico y proceda a
borrarlo de su sistema.

Sus datos personales serán tratados de forma confidencial y no serán
cedidos a terceros ajenos a ICARTO. En cualquier caso, podrá ejercer los
derecho de oposición, acceso, rectificación y cancelación de acuerdo con lo
establecido en la Ley Orgánica 15/99, de 13 de diciembre, de Protección de
Datos de Carácter Personal dirigiéndose a Innovación, Cooperación,
Cartografía e Territorio, SL. (ICARTO) en la dirección postal a C/ Rafael
Alberti, nº 13, 1ºD, 15.008 – (A Coruña).
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_usuarios/attachments/20181008/1bb38358/attachment.html>


Más información sobre la lista de distribución gvSIG_usuarios