A ver... si entendi bien lo que quieres es quitar un mensaje generico y decir algo mas "especifico" en el contexto del error... e.j:
insert into tabla values (1, 'un texto'); si el servidor da un mensaje de error SQLXXXYZ, tu quieres decirle al usuario "tal cosa ya existe en la tabla" estoy seguro que en todos los lenguajes de programacion cuando interactuas con una base de datos, generalemnte el driver o la interfaz que utilizas para interactuar con la base de datos te permite capturar los errores... alvaro ya te ha dicho varias veces esto... (asi como otros que siguen el hilo) la forma (mas sana) que yo veo para _resolver_ este problemita seria: 1: Identificar los mensajes de error que se quiera personalizar 3: Crear una tabla (en base de datos) o enum/array (del lado de la aplicacion) y relacionar codigos de error +mensajes de servidor con un registro en el enum matriz, o tabla en base de datos y el mensaje definido por usuario 4: Revisar en la documentacion del driver la forma de leer los mensajes de error enviados por el servidor 5: escribir las excepciones correspondientes en la aplicacion al momento de ejecutar una consulta (select, insert, delete, etc) a la base de datos... 6: en caso de que la consulta no sea exitosa, lanzar la excepcion y el correspondiente mensaje aca te dejo un ejemplo de una solucion en python claramente no es la mejor, ni esta escrita de lo lindo... pero creo que podria daros una idea de como resolver el problema #!/bin/env python import psycopg2 import sys errorMessages= { 'OperationalError': "Hay un problema operacional, el password es incorrecto", 'ProgrammingError': "Se trato de seleccionar un campo que no existe." } try: databaseConnection = psycopg2.connect("dbname='onuva' user='onuva' host='localhost' password='unpasswordquenovaafuncionar'") dbCursor = databaseConnection.cursor() except psycopg2.OperationalError: # aca el password resulto invalido print errorMessages['OperationalError'] # se lanza el mensaje de error dependiendo de lo que # arroja la exception print 'Saliendo del programa' sys.exit() try: userKey = 1 sqlString = 'UPDATE usuarios set vetado=FALSE where id = '+str(userKey) # El campo vetado no existe dbCursor.execute(sqlString) except psycopg2.ProgrammingError: # en este caso la sentencia falla y lanza esta exception # al capturarla se busca el mensaje de error requerido # en caso de desear que todo esto fuera por base de datos # es decir que los mensajes se alojen en una tabla en db # pues solo quedaria agregar el error correspondiente print errorMessages['ProgrammingError']+'\nLa sentencia SQL utilizada fue :\n\t\t%s' % sqlString print 'Saliendo del programa' sys.exit() de cualquier modo, lei mas arriba que lo estabas haciendo en .net http://npgsql.projects.postgresql.org/docs/api/ aca esta la documentacion revisa NpgsqlError supongo que seria suficiente para hacer todo esto... Otra forma podria ser modificando el codigo fuente de postgresql y cambiar los codigos y mensajes de error... (aunque esto probablemente traeria muchos otros problemas... creo... 2009/1/10 Alvaro Herrera <alvhe...@alvh.no-ip.org>: > Calabaza escribió: >> 2009/1/9 Juan Ramirez <juanrmira...@hotmail.com>: >> > >> >> From: calali...@gmail.com >> >> Mira este hilo del archivo: >> >> http://archives.postgresql.org/pgsql-es-ayuda/2008-05/msg00385.php >> > >> > no me es funcional, porque de esa manera me obliga a crear una >> > función para cada cosa, >> >> de las funciones no te vas a salvar si quieres hacer eso :) > > No es cierto; se puede hacer sin funciones (aunque no enteramente en el > lado del servidor). > > -- > Alvaro Herrera http://www.amazon.com/gp/registry/3BP7BYG9PUGI8 > "Postgres is bloatware by design: it was built to house > PhD theses." (Joey Hellerstein, SIGMOD annual conference 2002) > -- > TIP 7: no olvides aumentar la configuración del "free space map" > -- TIP 8: explain analyze es tu amigo