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 08-06-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
borrar en detalle con ref en maestro

Hola, trabajo con Firdbird 2.0 y Delphi 5, tengo un a tabla maestro "clientes" y la table detalle "departamentos", tengo esta referencia:
ALTER TABLE clientes ADD CONSTRAINT FK_DEPTO FOREIGN KEY (cl_DEPTO) REFERENCES DEPARTAMENTOS (CODIGO) ON UPDATE CASCADE ON DELETE NO ACTION;

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 cierro 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 mensaje?
Responder Con Cita
  #2  
Antiguo 08-06-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
pues lo que se me ocurre es hacer un trigger para el ondelete y verificar si tiene registros
Responder Con Cita
  #3  
Antiguo 08-06-2007
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

Lo que no te muestre el error es algo raro lo probaste con ibexpert. Estoy 100% seguro que con ibexpert te debe salir un error de violacion de integridad referencial lo cual no te permite borrar el registro. Ahora si es desde algun lengua como delphi puede ser error de aplicaion mas no de firebird. Y la solucion par arreglar el lo dle mensaje ya que no querrar que lance un mensaje de fireebird sino uno tuyo.

crea un evento before delete

haces un select sobre cleintes donde poseea el departamento que se esta borrando (recuerdas usar old.campo y no new.campo) y si este es diferente de nulo lanzas la exception. Por seguraida a la variable que la vas a asignar el valor que devuelve el numero de registros le asignas nulo antes de asignarla.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
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
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Numerar el detalle Maestro / detalle en secuencia josejose SQL 5 10-02-2007 00:27:38
Borrar lineas detalle al borrar registro maestro akinom38 Conexión con bases de datos 3 11-01-2006 10:38:07
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
Maestro-Detalle ;Actualizar detalle a partir de un DBgrid norberto_larios Conexión con bases de datos 1 11-09-2004 18:17:34


La franja horaria es GMT +2. Ahora son las 21:32:07.


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