From: | Pascual De Ruvo <deruvo(at)gmail(dot)com> |
---|---|
To: | Nicolas Sorich <nsorich(at)udec(dot)cl> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: " duda con sentencia" |
Date: | 2005-07-21 03:49:54 |
Message-ID: | fb73c1ee05072020492af99eb@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Recuerda siempre responder a la lista
On 7/20/05, Nicolas Sorich <nsorich(at)udec(dot)cl> wrote:
>
> el problemaes que tengo datos antiguos de una traspaso que hice con el
> siguiente formato
>
En qué tipo de columna y con qué formato se encuentra la data antigua?
ejecuto
> select extract( year from current_date) || lpad(nextval(idalumno), 3, '0')
> from alumno1 order by idalumno asc;
> y me sale que tengo el siguiente error
> ERROR: no existe la relación "890186",
>
Como puedes ver en la documentacion
http://www.postgresql.org/docs/8.0/static/functions-sequence.html ,
la funcion nextval(text) recibe como parámetro un texto que debe ser el
nombre de una secuencia, aparentemente la estás invocando pasando como
parámetro el nombre de una columna (idalumno). Debes crear una secuencia
(ej. seq_alumno e invocar la función de la siguiente manera:
nextval('seq_alumno').
o sea tengo registros antiguos que no empiezan con el añoaño2005 en este
> caso, alguna sugerencia
>
Tienes una columna de fecha que contenga el año?
Entiendo que tienes una columna llamada idalumno que contiene valores
secuenciales, pero todavía no me queda claro lo que deseas hacer...
Deseas actualizar la data de la tabla de manera que en una columna se
almacene el año concatenado con un valor secuencial de tres posiciones
rellenado con ceros a la izquierda?
citando tu ejemplo:
2005001 2005002
(Fíjate que de ser así sólo podrás almacenar 999 alumnos por año - 2005999)
Si este es el caso, deberias hacer algo como:
select extract(year from fecha) || lpad(idalumno,3,'0') from ...
De esa manera ya tendrías la data antigua en el formato que deseas.
Para que los nuevos registros se inserten con ese formato, en el valor
default del campo debes colocar:
select extract( year from current_date) || lpad(nextval('secuencia'), 3,
'0')
Si 3 posiciones no son suficientes como lo supongo, debes cambiar el número
3 por un valor más elevado
Otra cosa que no me queda clara es: Deseas que el valor secuencial se
reinicie automáticamente cada año o que aumente indefinidamnte?
>
>
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Horacio Degiorgi | 2005-07-21 04:33:02 | Re: Ayuda con formato de Fecha |
Previous Message | fernando villarroel | 2005-07-20 23:15:11 | Ayuda con formato de Fecha |