Consulta como saber si existe un registro en multiples tablas usando mysql

867 views
Skip to first unread message

Marcelo Barberis

unread,
Apr 16, 2014, 12:16:10 PM4/16/14
to publicesvfoxpro
Estimados amigos
les consulto algo, tengo un total de 30 tablas y sigo aumentando, ahora tengo una tabla principal con un campo codigo_anim, y ese codigo lo estoy utilizando en mas de 20 tablas mas, para realizar algunas relaciones si es que necesito claro, ahora estoy colocando un codigo en un form para eliminar un registro de la tabla principal y  me tope con esto, si elimino un regstro de la tabla principal y quizas estare dejando huerfano al registro en mas 20 tablas.
Mi consulta es la siguiente, como podria hacer para hacer un codigo que pueda revisar si existe el codigo "06-32" que podria existir en mas 20 tablas, la idea es que si existe este codigo aunque sea en una tabla de esas 20 se bloquee o me aparezca un mensaje "NO SE PUEDE ELIMINAR PORQUE EXISTE EN OTRA TABLA: Registro"  y si no existe que proceda a eliminarlo, estoy usando mysql
De antemano Agradecere cualquier tipo de comentario que me ayude a solucionar lo que deseo hacer
--
Ing. Marcelo Barberis Gutierrez
Sistemas Informaticos Inc
Villa Montes - Bolivia
Telef.: +591-76831064

ZeRoberto

unread,
Apr 16, 2014, 12:20:01 PM4/16/14
to publicesvfoxpro
No están relacionadas tus tablas?

Marcelo Barberis

unread,
Apr 16, 2014, 12:23:25 PM4/16/14
to publicesvfoxpro
bueno en la tabla principal tengo el campo tipo varchar codigo_anim y en mas de 20 tablas he puesto el campo codigo_anim, bueno estos campos no tienen ningun tipo de indice

ZeRoberto

unread,
Apr 16, 2014, 12:41:04 PM4/16/14
to publicesvfoxpro
No entendí muy bien tienes una tabla maestra con el campo codigo_anim y 20 tablas mas que contienen ese campo?, que guardas en las otras 20 tablas, es una especie de historico?

ZeRoberto

unread,
Apr 16, 2014, 12:44:04 PM4/16/14
to publicesvfoxpro
Bueno no se se si seria lo correcto pero puedes hacer una funcion que te revise si existe el codigo en alguna de esas tablas mediante 

IF EXISTS(SELECT * FROM Tabla1 WHERE codigo_anim = tccodigo_anim) THEN
END IF

Marcelo Barberis

unread,
Apr 16, 2014, 12:54:35 PM4/16/14
to publicesvfoxpro
No estimado, para explicarte sinteticamente, tengo 1 tabla padre y 20 tablas hijas, es decir, tengo una tabla padre con todos los datos personales, y en las 20 tablas hijas solo selecciono el codigo_anim y completo los otros datos.
tengo la tabla padre tblanimal con todos los datos y por ej la tabla hija tblpartos que tengo el codigo_anim para elegir el codigo del animal solamente

WGWH

unread,
Apr 16, 2014, 1:17:14 PM4/16/14
to publice...@googlegroups.com
Marcelo, busca ayuda sobre relaciones e integridad referencial, todos los SGDB (incluísive en VFP DBC) tienen actualización en cascada , eliminación en cascada o simplemente restringen  eliminar un registro padre si este tiene hijos, como es en tu caso (PRIMARY KEY, FOREING KEY), es decir que lo  buscas hacer lo tienes que hacer a nivel de MYSQL en el diseño de tu DB, no del VFP (claro que tambien lo puedes hacer, pero para qué? si puede hacerlo el motor de la DB).

Nunca e utilizado MYSQL por lo que no te doy el dato específico para este, pero no debe estar tan diferente de como se hace en la mayoría.

Un saludo

W. Wassmer
Reply all
Reply to author
Forward
0 new messages