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

ayuda por favor

Estas en el tema de ayuda por favor en el foro de PostgreSQL en Foros del Web. hola a todos miren tengo el siguiente problema estoy trabajando con unas tablas las cuales no tienen auto incremento, abra alguien que me explique la ...
  #1 (permalink)  
Antiguo 20/01/2010, 16:32
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
ayuda por favor

hola a todos miren tengo el siguiente problema estoy trabajando con unas tablas las cuales no tienen auto incremento, abra alguien que me explique la sintaxis para poder recuperar el numero mayor y aumentarle uno

ami se me ocurre asi

INSERT INTO tabla_1 (idtabla_1,columna_2,columna_3) VALUES (
(select MAX (idtabla_1) from tabla_1 ++1)
,valor_2, valor_3) ;

asi me lo imagino yo pero la verdad creo que ando un poco perdido alguien que me pudiera ayudar por favor
  #2 (permalink)  
Antiguo 20/01/2010, 16:38
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: ayuda por favor

Tienes varias formas de lograrlo, lo que te sugiero es hacerlo directamente con la base de datos y con la función MAX obtienes el dato mayor y luego solo necesitas incrementar ese valor + 1. No creo que debes usar ++1 sino solamente +1. Deja que un moderador te traslade al foro de MySQL para que te puedan indicar la mejor forma de lograrlo
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 20/01/2010, 16:42
 
Fecha de Ingreso: agosto-2009
Ubicación: tlalnepantla
Mensajes: 97
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: ayuda por favor

es que estoy trabajando php con postgres por eso pense que este era el mejor foro gracias
  #4 (permalink)  
Antiguo 20/01/2010, 16:43
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: ayuda por favor

Pues edito, entonces espera que te trasladen al foro de PostgreSql para que allí te indiquen, no al de MySQL.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 20/01/2010, 18:02
 
Fecha de Ingreso: junio-2007
Mensajes: 189
Antigüedad: 16 años, 9 meses
Puntos: 3
Respuesta: ayuda por favor

nose si en PostgreSQL será asi, pero puedes utilizar esta idea que yo la uso con mysql

SELECT id FROM tu_tabla ORDER BY id DESC LIMIT 0,1;

Recuperas el valor y sumas uno.
  #6 (permalink)  
Antiguo 20/01/2010, 19:35
Avatar de maturano  
Fecha de Ingreso: enero-2010
Ubicación: /home/
Mensajes: 537
Antigüedad: 14 años, 3 meses
Puntos: 36
Respuesta: ayuda por favor

PostgresSQL no tiene un campo autoincrementable como lo tiene MySQL. En su lugar maneja Secuencias
http://www.postgresql.org/docs/8.4/i...esequence.html

Para tener un campo "auto-incrementable" puedes utilizar la palabra clave 'serial', esto te creará de manera automática una secuencia. Por ejemplo:
Código SQL:
Ver original
  1. CREATE TABLE tabla (id serial, campo CHARARTER VARYING(255));
__________________
I ♥ The Music!
  #7 (permalink)  
Antiguo 20/01/2010, 23:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Tema movido desde PHP a PostgreSQL
  #8 (permalink)  
Antiguo 21/01/2010, 06:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ayuda por favor

Deacuerdo con maturano.

Las secuencias son la solución a tu problema.

Te muestro en un ejemplo como implementarlas.
Código SQL:
Ver original
  1. pruebas=> CREATE SEQUENCE seq_idpersona START WITH 1;
  2. CREATE SEQUENCE
  3. pruebas=> CREATE TABLE persona(id INTEGER PRIMARY KEY,nombre text);
  4. NOTICE:  CREATE TABLE / PRIMARY KEY will CREATE implicit INDEX "persona_pkey" fo
  5. CREATE TABLE
  6. pruebas=> INSERT INTO persona VALUES(NEXTVAL('seq_idpersona'),'daniel');
  7. INSERT 0 1
  8. pruebas=> INSERT INTO persona VALUES(NEXTVAL('seq_idpersona'),'ana');
  9. INSERT 0 1
  10. pruebas=> INSERT INTO persona VALUES(NEXTVAL('seq_idpersona'),'diego');
  11. INSERT 0 1
  12. pruebas=> INSERT INTO persona VALUES(NEXTVAL('seq_idpersona'),'alex');
  13. INSERT 0 1
  14. pruebas=> SELECT *FROM persona;
  15.  id | nombre
  16. ----+--------
  17.   1 | daniel
  18.   2 | ana
  19.   3 | diego
  20.   4 | alex
  21. (4 filas)
  22.  
  23. pruebas=>

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: favor
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 00:35.