FoxPro/Visual FoxPro - INTEGRIDAD REFERENCIAL PROGRAMADA

   
Vista:

INTEGRIDAD REFERENCIAL PROGRAMADA

Publicado por Santiago (40 intervenciones) el 28/11/2014 01:55:03
Hola a todos...

Ante todo, muchas por leer todo lo que se viene. Primero explico qué sucede y después hago la pregunta...

El generador de IR se accede en fase de diseño por medio de la opción "Modificar integridad referencial", del menú Base de datos. Para cada relación entre dos tablas, el generador muestra las reglas posibles que rigen sobre las acciones ACTUALIZAR, ELIMINAR e INSERTAR. Para actualizar, por ejemplo, hay tres reglas posibles: RESTRINGIR, CASCADA o IGNORAR. Si uno quiere ser estricto, lo mejor es RESTRINGIR. Sin embargo, cuando uno crea la relación por medio del programa, VFP siempre asigna, por defecto, la regla IGNORAR. Explico con un ejemplo:

ALTER TABLE tpag ADD FOREIGN KEY codentpag TAG codentpag REFERENCES codent TAG codent

crea una relación entre las tablas tpag y tent, que consiste en que cualquier valor que se inserte en el campo codentpag (de tpag) está relacionado con un valor en el campo codent (de tent). En otras palabras, es una relación "uno a varios" entre tent (maestro) y tpag (detalle). El problema es que, al crear las reglas de esta relación (en la IR), VFP automáticamente asigna IGNORAR como regla para las tres acciones ACTUALIZAR, ELIMINAR e INSERTAR registros en la tabla detalle ( tpag). Entonces, por ejemplo, si al INSERTAR un registro en el detalle (tpag) se asigna un valor al campo codentpag y ese valor no existe en el campo codent de la tabla maestra (tent), la regla IGNORAR hace que no se genere error. Pero si la regla para INSERTAR fuera RESTRINGIR, la ausencia del valor en la tabla maestra (tent) ocasionaría un error (Trigger failed o error de desencadenante). Es preferible ser estricto y que se genere un error a permitir que se incluya basura en la tabla.

Ahora sí la pregunta: ¿Hay algún comando de VFP que, dentro del programa, permita modificar las reglas de IR para ACTUALIZAR, ELIMINAR e INSERTAR? Es decir, que permita modificar las reglas, cambiando IGNORAR por RESTRINGIR. Sería una instrucción que se colocaría inmediatamente después de ALTER TABLE. Hasta ahora, el cambio de las reglas lo he realizado en forma manual por medio del generador de IR, accediendo a la base de datos de cada cliente, cuando lo lógico es que, al instalar una nueva versión del programa por medio de la cual se crea la nueva relación (ALTER TABLE...), se modifiquen de una vez las reglas de IR...

Espero haberme hecho entender. Muchas gracias por su paciencia... y por la ayuda que espero que llegue...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

INTEGRIDAD REFERENCIAL PROGRAMADA

Publicado por Kinich (1 intervención) el 12/09/2015 04:28:09
Bueno buscando encontré tu pregunta y existe una respuesta que para alguien mas podrá servir, por la diferencia de fechas

http://www.cid.uc.edu.ve/fponte/base3.htm

no se molesten por que revivo los muertos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

INTEGRIDAD REFERENCIAL PROGRAMADA

Publicado por Santiago Ferreira (40 intervenciones) el 12/09/2015 08:28:28
Muchas gracias, Kinich, por la respuesta... Sin embargo, en el link explican con detalle lo que yo resumí más arriba, es decir, muestran cómo definir la integridad referencial MANUALMENTE, cuando lo que yo quiero saber es la forma de hacerlo PROGRAMÁTICAMENTE (por medio de una instrucción), si es que esta forma existe...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar