¿Cómo no permitir eliminar un registro que este relacionado con un registro de otra tabla?.

1,042 views
Skip to first unread message

JONATAN LÓPEZ

unread,
Apr 15, 2014, 12:29:05 PM4/15/14
to publice...@googlegroups.com
Hola a todos tengo este problema que la verdad se trata de integridad referencial que no se como resolverlo
El tema es que lo que pude lograr desde la base de datos me valide el tema de no borrar un registro si este tiene relacion con otro registro de otra tabla, pero al querer eliminar uno que si hace referencia a otro registro desde un formulario éste  me da un error: Trigger failed in MiTabla: errror en el desencadenador en MiTabla
Qué me falta para poder solucionar este tema? :/
Desde ya muchas gracias :}
 

Jonathan Reyes

unread,
Apr 15, 2014, 12:48:58 PM4/15/14
to publice...@googlegroups.com
Puedes hacer una funcion que se encargue de hacer la misma verificacion que hace el trigger. aunque tambien envia el codigo haber que es lo que esta mal en el trigger

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Apr 15, 2014, 3:22:50 PM4/15/14
to publice...@googlegroups.com
Hola aquí te dejo un ejemplo de como debe hacer.
DELIMITER $$


CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `EliminarCliente` BEFORE DELETE ON `tbcliente` 
    FOR EACH ROW BEGIN
DECLARE cCodCli CHAR(4);
SET cCodCli = OLD.Codigo;
IF EXISTS(SELECT CodCli FROM TbCabecera WHERE CodCli=cCodCli LIMIT 1) THEN 
CALL func(1);/*aqui se supone que la funciona no existe
                                      entonces el controlador de errores te retorna y no te deja avanzar
                                      es un pequeño truco*/
END IF;
    END;
$$

DELIMITER ;

Desde VFP cuando tratas de eliminar te dirá que esa función no existe pero con Aerror puedes tener el numero de error que te esta dando y de esa manera cada vez que te sale ese error puede tu envías en messagebox con le mensaje que quieres, por otro lado te invito a revisar mi canal ahí encontraras mas información y herramientas.


Saludos; 


Ing. Russvell Jesus Soto Gamarra 
Framework Multi-conexion v6.0 trabaja cualquier base de datos
(SQLServer, MySQL, Firebird, MariaDB, PostgreSQL, Oracle y etc.) 


Marcelo Barberis

unread,
Apr 15, 2014, 6:26:41 PM4/15/14
to publicesvfoxpro
lo que haria yo es hacerle una consulta a las otras tablas y me dan que exste regstro entonces no lo elimino
--
Ing. Marcelo Barberis Gutierrez
Sistemas Informaticos Inc
Villa Montes - Bolivia
Telef.: +591-76831064

JONATAN LÓPEZ

unread,
Apr 21, 2014, 5:14:04 PM4/21/14
to publice...@googlegroups.com
Muchas gracias por su ayuda y dedicacion para contestar... y la verdad que tienen razón nunca se me ocurrió hacer una función porque creía que el mismo vfp se podia encargar de eso :B (Ahora solo me queda ver si me sale je)
 Ya este tema le doy por finalizado.
Saludos Genios!

Hugo C.

unread,
Apr 23, 2014, 3:53:30 PM4/23/14
to publice...@googlegroups.com
VFP si se puede encargar de eso (..no permitir eliminar..) si en la base de datos (dbc) utilizas 
integridad referencila


Saludos.

JONATAN LÓPEZ

unread,
May 13, 2014, 5:40:06 PM5/13/14
to publice...@googlegroups.com
Bueno muchas gracias Hugo :)
Saludos!

Reply all
Reply to author
Forward
0 new messages