Re: Formatear mensajes de error

From: "Juan Manuel Fernandez" <jmfernandez(at)unlu(dot)edu(dot)ar>
To: "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Formatear mensajes de error
Date: 2008-05-19 11:26:58
Message-ID: 27f3c8cd0805190426q77089e0el2e8f346ec8909dda@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El día 19 de mayo de 2008 2:29, Jaime Casanova
<systemguards(at)gmail(dot)com> escribió:
> On Sun, May 18, 2008 at 10:06 PM, Juan Manuel Fernandez
> <jmfernandez(at)unlu(dot)edu(dot)ar> wrote:
>> ---------- Forwarded message ----------
>> From: Juan Manuel Fernandez <jmfernandez(at)unlu(dot)edu(dot)ar>
>> Date: 2008/5/19
>> Subject: Re: [pgsql-es-ayuda] Formatear mensajes de error
>> To: Jaime Casanova <systemguards(at)gmail(dot)com>
>>
>>
>> De maravilla, muchisimas gracias!
>> Lo unico que no entendi es...
>>
>> 2008/5/18 Jaime Casanova <systemguards(at)gmail(dot)com>:
>>> On Sun, May 18, 2008 at 6:21 PM, Juan Manuel Fernandez
>>> <jmfernandez(at)unlu(dot)edu(dot)ar> wrote:
>>>> Buenas Lista!
>>>>
>>>> Pregunto despues de un rato de googlear y revisar el manual de
>>>> PostgreSQL sin mucho exito (consideren que esta en ingles :P), hay
>>>> alguna forma de lookear los mensajes de error?
>>>>
>>>> Por ejemplo, es posible que en vez de que cuando ingreso una clave
>>>> repetida me aparezca ERROR: duplicate key value violates unique
>>>> constraint "t_deptos_academicos_pkey", aparezca un mensaje redactado
>>>> por mi?
>>>>
>>>
>>> Puedes usar el nombre de los constraints, por ejemplo:
>>> """
>>> create table tab1 (col1 serial);
>>> alter table tab1 add constraint "Registro ya existe." primary key (col1);
>>>
>>> insert into tab1 values(1), (1);
>>> """
>>>
>>> me da este mensaje:
>>> ERROR: llave duplicada viola restricción de unicidad «Registro ya existe.»
>>
>> Aqui me seguiria dando el mensaje que yo marque en mi mail, en
>> ingles... me lo estas redactando en español a modo de ejemplo, no?
>>
>
> nop, yo instale con la opcion NLS (Native Language Support) y como mi
> sistema operativo esta en español el postgres se me configura asi

Nueva pregunta, hay forma, una vez instalado PostgreSQL de hacer uso
de esta opcion de NLS?

>>> O puedes poner el insert en una función y usar RAISE EXCEPTION
>>>
>>> """
>>> CREATE FUNCTION insertar(int) RETURNS VOID AS $$
>>> BEGIN
>>> BEGIN
>>> INSERT INTO tab1 VALUES ($1);
>>> RETURN;
>>> EXCEPTION WHEN unique_violation THEN
>>> RAISE EXCEPTION 'Registro ya existe.';
>>> END;
>>> END;
>>> $$ LANGUAGE plpgsql;
>>>
>>> select insertar(1);
>>> select insertar(1);
>>>
>>> """
>>>
>>> y obtendras el error que prefieras, por ejemplo: "ERROR: Registro ya existe."
>>>
>>
>> Si fuera como dije arriba, de este modo cierra mas!
>>
>
> eso si, el mensaje queda mejor pero en cambio te toca crear una
> funcion para cada insert, update o delete en el que quieras poner un
> mensaje personalizado...
>
> --
> Atentamente,
> Jaime Casanova
> Soporte y capacitación de PostgreSQL
> Guayaquil - Ecuador
> Cel. (593) 087171157
>
>
> ________ Information from NOD32 ________
> This message was checked by NOD32 Antivirus System for Linux Mail Server.
> http://www.nod32.com
>
>

Desde ya muchas gracias,

Saludos,

Juan

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rodriguez Fernando 2008-05-19 12:16:38 Re: Postgres se pasma!!
Previous Message Jaime Casanova 2008-05-19 05:29:37 Re: Formatear mensajes de error