Hola,
Si revisé pero no encontré nada acerca del objeto afectado, por ahora la única
solución es: when unique_violation then GET STACKED DIAGNOSTICS
l_RETURNED_SQLSTATE = RETURNED_SQLSTATE, l_MESSAGE_TEXT = MESSAGE_TEXT,
l_PG_EXCEPTION_DETAIL = PG_EXCEPTION_DETAIL; if position('uk_cliente' in
l_MESSAGE_TEXT)> 0 then s_error_msj:= 'Ya existe un tipo_documento y
numero_documento que coinciden con los ingresados. Por favor ingrese un tipo y
documento diferentes o solicite restaurar la contraseña.'; end if; raise
exception '%', s_error_msj;
El Sábado 19 de diciembre de 2015 15:08, Anthony Sotolongo
<[email protected]> escribió:
Hola Alejandro, revisa los Error Diagnostics Values y tal vez te pueda dar la
pista de la UNIQUE que te da el error, utiliza el ITEM que requieras(creo que
COLUMN_NAME o CONSTRAINT_NAME o PG_EXCEPTION_DETAIL o PG_EXCEPTION_HINT, pueden
ayudarte).
te recomiendo:
http://www.postgresql.org/docs/9.4/interactive/plpgsql-control-structures.html#PLPGSQL-ERROR-TRAPPING
Saludos
El 12/19/2015 a las 3:04 PM, Alejandro Carrillo escribió:
Buen dia,
Rato sin hablar en la lista. Tengo una duda, estoy creando un function en
Postgresql 9.4 que insertará datos en una tabla, sin embargo esta tabla tiene 2
o más unique constraint y necesito saber unicamente el nombre de cual de las
unique constraint ha sido afectada, ej:
create or replace function insertar( p1 character varying, p2 character
varying, p3 character varying ) RETURNS void AS $$ begin inser into ...;
exception when unique_violation then -- ACA DEBO OBTENER UNICAMENTE EL
NOMBRE EXACTO DE LA UNIQUE KEY AFECTADA para efectos de mostrar un mensaje de
error personalizado. end; $$;
Cordial saludo