From: | "Jaime Casanova" <systemguards(at)gmail(dot)com> |
---|---|
To: | "Juan Manuel Fernandez" <jmfernandez(at)unlu(dot)edu(dot)ar> |
Cc: | "Lista - PostgreSQL" <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: Formatear mensajes de error |
Date: | 2008-05-18 23:57:21 |
Message-ID: | c2d9e70e0805181657n18337afcl9fc187633bc093c0@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
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.»
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."
--
Atentamente,
Jaime Casanova
Soporte y capacitación de PostgreSQL
Guayaquil - Ecuador
Cel. (593) 087171157
From | Date | Subject | |
---|---|---|---|
Next Message | Marcos Saldivar | 2008-05-19 00:08:49 | Re: Iniciar el postmaster.!!! |
Previous Message | Mario Cassanelli | 2008-05-18 23:55:30 | Re: Iniciar el postmaster.!!! |