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

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Ignacio Balcarce <ignacio(dot)balcarce(at)vivatia(dot)com>
Cc: 'Mariano Reingart' <reingart(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X
Date: 2010-04-06 22:27:26
Message-ID: 20100406222726.GE3491@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Ignacio Balcarce escribió:

> BEGIN
> IF (SELECT max(seq_id) FROM thuban_seq
> WHERE seq_id LIKE (to_char(now() + '1 day'::interval,
> 'YYYYMMDD') || '%')) IS NOT NULL
>
> THEN
> SELECT max(seq_id) INTO
> item_id
> FROM thuban_seq
> WHERE seq_id LIKE
> (to_char(now() + '1 day'::interval, 'YYYYMMDD') || '%');
>
> id := substr(item_id, 9,
> length(item_id)-9)::INT8;
>
> ELSE
> id:= 00000000;
> END IF;
>
> INSERT INTO thuban_seq(seq_id) VALUES (to_char(now(),'YYYYMMDD') ||
> (id+1)) RETURNING seq_id INTO item_id;

Espero que tengas algún lock externamente a la ejecución de esta
función, porque así como está es sujeto de condiciones de carrera.

--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
"I'm always right, but sometimes I'm more right than other times."
(Linus Torvalds)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-04-06 22:36:44 Re: Es posible recuperar una base de datos después de hacer "drop database"?
Previous Message Alvaro Herrera 2010-04-06 22:25:15 Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X