![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
identificar un error de clave foranea...
hola amigos una consulta, este es el caso se que los errores de oracle se pueden identificar por su iderror.. ahora tengo una tabla con varios fk.. hay forma de identificar cual de estos fk es el que esta produciendo el error solo con el mensaje de error o algo asi? desde ya muchas gracias
![]() |
#2
|
||||
|
||||
tambien me serviria un codigo que me devuelva el nombre de la clave secundaria que no se cumple...
|
#3
|
||||
|
||||
Lo normal es poner nombres de restricciones cuando se declaran estas claves y, en general, para cualquier campo que pudiera fallar (campos no nulos, indices únicos, etc.)
Por ejemplo, en mi empresa trabajamos con Oracle y nombramos a las restricciones (constrints) de claves foráneas con el nombre "fk_tabla_campo", para saber al menos que campo clave de que tabla está fallando. No se si usas firebird o MSSql pero supongo que todas deben permitir dar nombres de contraints de una u otra forma Saludos |
#4
|
||||
|
||||
![]() if error = nombre_fk then begin accion end; el caso es que la ventana con la que estoy trabajando hace una migracion de postgress a oracle con una tabla detalle. El caso es que esta tabla tiene 5 fk.. yo solo necesito que inserte en otra tabla en el caso que esa fkparticular sea la que cause el error de clave, constraint, llave o como esten acostumbrados a llamarlo.. De nuevo gracias y aguardo mas respuestas ![]() ![]() |
#5
|
||||
|
||||
¿Y que componentes de acceso a datos estás utilizando? Al menos DBExpress devuelve el código de la restricción violada dentro del mensaje de error. Si no es una restricción con nombre suele devolver un nombre del sistema (ojo, sigo hablando de oracle), como por ejemplo "SYS_C00xxxxxx".
Tendrías que capturar la excepción con un try..except y luego obtener el texto buscando dentro del mensaje de error (por ejemplo, con la función "Pos".) No se, seguro que hay otras formas más elegantes, pero asi, a bote pronto, es lo primero que se me ocurre. Saludos |
#6
|
||||
|
||||
si...
![]() ![]() LARGA VIDA A DELPHI! |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Campo puede ser clave foranea de dos tabla | richy08 | Conexión con bases de datos | 4 | 26-01-2010 18:38:54 |
problema al crear clave foranea | anubis | Firebird e Interbase | 4 | 28-06-2008 16:24:49 |
Saber a quien se refiere una clave foránea | Cecil | Conexión con bases de datos | 2 | 27-09-2007 19:17:50 |
Extraer datos de una pagina en java que tiene clave (sabiendo la clave claro) ;) | kalimocho | Internet | 2 | 29-06-2005 05:11:24 |
Problema con referencia foranea ! | erickperez6 | Firebird e Interbase | 10 | 12-05-2003 17:52:21 |
![]() |
|