Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-06-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
error en firebird 2.0

Hola, trabajo con Firdbird 2.0 y Delphi 5, estoy creando una bbdd, con una tabla y varias referenciales, venia todo bien hasta que me aparecio un error y no se porque es, las tablbas la tengo creadas, la maestra "clientes" y la detalle "departamentos", con este codigo lo hice para otras tablas pero en esta "departamentos" me aparece un error.
Hago lo siguiente:
ALTER TABLE clientes ADD CONSTRAINT FK_DEPTO FOREIGN KEY (cl_DEPTO) REFERENCES DEPARTAMENTOS (CODIGO) ON UPDATE CASCADE ON DELETE NO ACTION;

Este es el error:
ISC ERROR MESSAGE:
violation of FOREIGN KEY constraint "PK_DEPTO" on table "DEPARTAMENTOS"
Foreign key reference target does not exist

PK_DEPTO es la PRIMARY KEY de la tabla "departamentos"
Responder Con Cita
  #2  
Antiguo 07-06-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Faltan datos

El error da porque falta algún registro en DEPARTAMENTOS (o en clientes está mal).

Los datos que están mal son:

Código SQL [-]
select cl_DEPTO from clientes 
left join DEPARTAMENTOS on (clientes.cl_DEPTO = DEPARTAMENTOS.CODIGO)
WHERE DEPARTAMENTOS.CODIGO IS NULL
__________________
Sotoca Web
Responder Con Cita
  #3  
Antiguo 07-06-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 21
ebeltete Va por buen camino
Sabes que reinicie el Firebird y funciono perfectamente, no se cual es el problema pero me ha pasado en otras oportunidades.
No se si debo preguntar en este hilo pero al crear esta referencia en las tablas, cuando borro un registro en la tabla departamentos con una referencia en la tabla clientes, no me muestra ningun error y lo borraç, pero cuando cierroo y abro nuevamente la aplicacion, el registro aparece, o sea que en definitiva no lo borra de la bbdd, como hago para que me muestre un mensaje de que ese registro tiene referencias en algun cliente? Lo hago con una consulta sql antes de borrar o mediante cascade o no action hay alguna manera que la firebird me lo impida respondiendome con un error
Responder Con Cita
  #4  
Antiguo 08-06-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
Creo que deberías quitar el "ON DELETE NO ACTION", si lo pones, el valor de la tabla CLIENTES no se altera, y tendrán un valor no válido. Si no lo pones, no te dejará borrar de la tabla DEPARTAMENTOS, produciéndose un error.
__________________
Sotoca Web
Responder Con Cita
  #5  
Antiguo 08-06-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
ON DELETE NO ACTION es la opción por defecto, (al menos en FB 1.5), si no se especifica otra.

Ahora mismo FB debería lanzar una excepción del tipo "Violation of constraint xxxxx" ya que no permite inconsistencias en la base de datos, es decir, no permite borrar un departamento si tiene un cliente.

El hecho de no mostrar ningún error, quizás sea por otra causa. Yo al menos, si obtengo los mensajes de error, especificando en los parámetros (Params) del objeto Transaction:

Código:
      isc_tpb_read_committed
      isc_tpb_rec_version
      isc_tpb_nowait
No uso commitRetaining, solo commit.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error con Firebird PacoPepe Conexión con bases de datos 2 12-04-2007 11:44:01
Error con Firebird keys Conexión con bases de datos 0 16-03-2007 14:03:19
Firebird 1.5.3 Error:No puede ejecutarse Firebird Guardian xq ya hay una instancia Delphius Firebird e Interbase 5 26-01-2007 10:19:20
Error feo en firebird rastafarey Firebird e Interbase 5 02-12-2005 14:45:07
Error mio o bug de Firebird? TJose Firebird e Interbase 3 18-04-2005 15:29:17


La franja horaria es GMT +2. Ahora son las 02:03:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi