Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X

From: Mariano Reingart <reingart(at)gmail(dot)com>
To: Ignacio Balcarce <ignacio(dot)balcarce(at)vivatia(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X
Date: 2010-04-06 19:05:39
Message-ID: z2u5aebd8251004061205q8be734bdj511ab7bc97c1d417@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

On Tue, Apr 6, 2010 at 3:31 PM, Mariano Reingart <reingart(at)gmail(dot)com> wrote:
> On Tue, Apr 6, 2010 at 10:08 AM, Ignacio Balcarce
> <ignacio(dot)balcarce(at)vivatia(dot)com> wrote:
>
>> ERROR:  el valor null para la columna «seq_id» viola la restricción not null
>>
>> CONTEXT:  sentencia SQL: «INSERT INTO thuban_seq(seq_id) VALUES
>> (to_char(now(),'YYYYMMDD') || ( $1 +1)) RETURNING seq_id»
>>
>> PL/pgSQL function "thuban_sp_generateid" line 19 at sentencia SQL
>>
>
> ¿Por que $1 si la función no tiene parámetros?
> Si entiendo bien, te esta convirtiendo todo a NULL por este parámetro.
> ¿No podés usar la variable id que estás calculando?
>

Perdón, no había visto bien la función, el problema esta en el IF,
siempre es verdadero (aún cuando no tenés datos), calculo que tendrías
que reescribirlo a:

IF (SELECT max(seq_id) FROM thuban_seq
WHERE seq_id LIKE
(to_char(now() + '1 day'::interval, 'YYYYMMDD') || '%')) IS NOT NULL

El EXISTS y COALESCE no ayudan en tu caso como lo planteaste (y todo
se convierte en NULL).

Sds

Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Ignacio Balcarce 2010-04-06 19:18:38 RE: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X
Previous Message Miguel R. Penabad 2010-04-06 18:36:31 Es posible recuperar una base de datos después de hacer "drop database"?