Columna serial

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Columna serial

yeliarias
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
[hidden email]

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
Reply | Threaded
Open this post in threaded view
|

Re: Columna serial

Francisco Puga-2
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 <[hidden email]> 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
[hidden email]

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.

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).

_______________________________________________
gvSIG_usuarios mailing list
[hidden email]

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