Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Insertar en una tabla un dato serial auto incrementable

Estas en el tema de Insertar en una tabla un dato serial auto incrementable en el foro de PostgreSQL en Foros del Web. Buenas noches amigos, apenas comienzo en el mundo de las bases e datos, reciente mente me tope con un problema el cual es el siguiente: ...
  #1 (permalink)  
Antiguo 02/01/2011, 23:51
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 11 meses
Puntos: 0
Pregunta Insertar en una tabla un dato serial auto incrementable

Buenas noches amigos, apenas comienzo en el mundo de las bases e datos, reciente mente me tope con un problema el cual es el siguiente:

cree esta tabla

CREATE TABLE division(
id_division SERIAL PRIMARY KEY,
descripcion CHAR(5));

y el problema ocurre a la hora de insertar, lo hago de las siguientes maneras:

sistemaDeIns=# INSERT INTO division VALUES ('CBI');
ERROR: la sintaxis de entrada no es válida para integer: «CBI»


sistemaDeIns=# INSERT INTO division VALUES ('','CBI');
ERROR: la sintaxis de entrada no es válida para integer: «»


sistemaDeIns=# INSERT INTO division VALUES (' ','CBI');
ERROR: la sintaxis de entrada no es válida para integer: « »

y como ven aparece un error, si inserto así, si inserta:

sistemaDeIns=# INSERT INTO division VALUES (1,'CBI');
INSERT 0 1

pero según yo el tipo de dato serial es autoincrementable y no hay necesidad de insertarlo manualmente por lo mismo, lo que quiero es poder insertar en tablas así sin necesidad de indicar el id de tipo serial ya que es auto incrementadle, espero y me puedan orientar, saludos.
  #2 (permalink)  
Antiguo 03/01/2011, 10:51
Avatar de xdrtas  
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 97
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: Insertar en una tabla un dato serial auto incrementable

Hola radamantys30, verás, cuando creas un campo SERIAL lo normal es que se te cree una secuencia, la secuencia es la que lleva la cuenta del autoincremento y para poder usarlo en un INSERT tienes que usar la función nextval('nombre_de_la_secuencia')

Dentro de tu base de datos vas a encontrar un elemento del árbol que se llama "Sequences" ahí tienes las secuencias para cada una de los campos seriales que hayas creado. Para ilustrarte mejor te pongo un ejemplo:

Código SQL:
Ver original
  1. INSERT INTO "Contenido"(
  2.                 "con_ID",
  3.                 "con_Titulo",
  4.                 "con_Contenido",
  5.                 "con_Imagen"
  6.             )
  7.             VALUES (
  8.                 NEXTVAL('"Contenido_con_ID_seq"'),
  9.                 tit,
  10.                 con,
  11.                 img        
  12.             );
NOTA: la doble comilla lo uso porque tengo los nombres de los campos y el nombre de la secuencia con caracteres mayúsculas, con todos los caracteres en minúsculas no hace falta usar la comilla doble. Hay otras funciones que manejan secuencias como SETVAL, CURVAL, etc... pero para hacer el auto incremento es con NEXTVAL, como lo ilustro en el ejemplo.

Espero haberte aclarado un poco la duda.
Un cordial saludo.
__________________
¿Cuál es el mejor lenguaje para programar?
Aquel lenguaje por el cual te paguen más.
[--::xdrtas.coolpage.biz::--]
[---:::xdrtas:::---]
  #3 (permalink)  
Antiguo 03/01/2011, 15:17
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: Insertar en una tabla un dato serial auto incrementable

GRACIAS DE ANTEMANO amigo xdrtas, si funciono así como lo citaste usndo la función NEXTVAL, hasta pronto y saludos.
  #4 (permalink)  
Antiguo 03/01/2011, 17:16
Avatar de xdrtas  
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 97
Antigüedad: 16 años, 6 meses
Puntos: 13
Respuesta: Insertar en una tabla un dato serial auto incrementable

De nada, me alegro haberte ayudado.
__________________
¿Cuál es el mejor lenguaje para programar?
Aquel lenguaje por el cual te paguen más.
[--::xdrtas.coolpage.biz::--]
[---:::xdrtas:::---]

Etiquetas: auto, dato, serial, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.