Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Procesos almacenados
Message
De
23/07/2009 12:01:30
Hilmar Zonneveld
Independent Consultant
Cochabamba, Bolivie
 
 
À
23/07/2009 08:49:20
Luis Parada
Prosoft´s de Venezuela, C.A.
Valencia, Vénézuéla
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP1
OS:
Windows XP SP2
Network:
Windows 2003 Server
Database:
Visual FoxPro
Divers
Thread ID:
01413889
Message ID:
01413980
Vues:
58
This message has been marked as the solution to the initial question of the thread.
>Muchas Gracias Sr. Hilmar, seria tan amable en orientarme como seria la programacion para el procedimiento de (Insert, Modify, Update), o en su defecto algun link.
>
>Saludos.
>Luis E. Parada P.

Insert, Update, Delete son tres triggers - tres lugares donde puedes escribir código cuando ocurren las acciones correspondientes - por ejemplo, cuando intentas borrar un registro.

Visual FoxPro lo utiliza automáticamente para la integridad referencial - por ejemplo, si intentas borrar un registro, a partir del procedimiento invocado desde el trigger, permite o no permite borrar el registro - por ejemplo, no lo permite borrar cuando hay datos relacionados en otras tablas. También es posible que el procedimiento en cuestión borre los registros relacionados - si borras un ingreso, se borran los detalles correspondientes del ingreso. Para todo esto defines las reglas de integridad referencial, y Visual FoxPro hace el resto. (Haz click en mi nombre arriba, entra a mi lista de artículos, y busca por un artículo sobre triggers e integridad referencial. También está disponible en español.)

Tú puedes definir acciones adicionales. Por ejemplo, algo que hice en Bata/Bolivia es que, al registrar detalles de ingresos o egresos, se actualizaba la cantidad del material en stock - en otra tabla, claro. El artículo mencionado también da una introducción sobre este tema.

Podrías impedir borrar un registro que ya ha sido marcado como "permanente", "archivado", o algo por el estilo.

Un uso común de los triggers es hacer una auditoría de cambios (audit-trail). En mi lista de artículos también encontrarás ejemplos sobre esto.

Pero para comenzar con un ejemplo muy simple (y poco útil), digamos que quieres que aleatoriamente se permita, o no se permita, borrar un registro.

En el trigger "Delete" de la tabla invocas la función prueba_de_trigger(). Es decir, escribes el nombre de la función, incluyendo los paréntesis, para que al intentar borrar un registro, se ejecute la función en cuestión. En los procedimientos almacenados de la base de datos, que normalmente es el mejor lugar para almacenar estas cosas, agregas la función:
function prueba_de_trigger()
  if rand() < 0.5
    return .T.
  else
    return .F.
  endif
endfunc
Luego, intentas borrar registros de tu tabla. Verás que algunas veces podrás borrarlos, otras veces, tendrás un mensaje "Trigger Failed".

En este caso, la función se limita a devolver .T. o .F., pero la misma función también puede hacer procesos adicionales, por ejemplo, guardar información sobre el hecho de que se hubiera borrado un registro, a un archivo de auditoría de cambios.

Saludos,

Hilmar.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform