Triggers

23/04/2004 - 19:18 por Leonardo Azpurua | Informe spam
Hola.

Alguien preguntó acerca de la utilidad de los Triggers en el grupo de vb. Lo
referí aquí, pero para darle una idea, le describí el siguiente ejemplo:

"Supón que tienes una tabla de artículos (A) y una de detalles de
movimientos
para esos artículos (D).

Se quiere:
1.- Que las existencias de los articulos en la tabla (A) sólo puedan
variar a consecuencia del registro de un movimiento.
2.- Que el registro de un movimiento actualice automáticamente la
existencia de las tablas de productos.

discúlpame por no utilizar la sintaxis de ningun SGBD, pero no se ninguna lo
suficientemente bien (me gusta que mis aplicaciones trabajen con cualquiera)
de manera que describo los procedimientos en seudocódigo:

Defines un Trigger para el UPDATE de la tabla A:
Si Nuevo.Existencia <> Original.Existencia THEN
Si varTriggerDetalles = Falso
Rechazar el Cambio y Dar Error
De Lo Contrario
varTriggerDetalles = Falso
Fin Si
Fin Si

y defines un Trigger para el INSERT de la tabla D:
varTriggerDetalles = VERDADERO
Ejecutar UPDATE A SET Existencia = Existencia + D.Entradas - D.Salidas"

pero me quedé con la curiosidad de cómo se escribiría eso mismo en Transact
(además que no entiendo como se pueden definir variables persistentes (el
"varTriggerDetalles" que se setea en el INSERT y se lee en el UPDATE).

Claro que podría revisar los BOL y consultar algunos ejemplos, pero para
Uds., viejos zorros de Transact, debe ser un paseo escribir los dos ejemplos
con la sintaxis debida, y ando un poco flojo estos días.

Gracias de antemano

Salud!

Leonardo
[MVP Visual Basic]
[Maicrosoft LVP - MOP Certified]
leonardo<arroba>mvps<punto>org
 

Leer las respuestas

#1 Maximiliano D. A.
23/04/2004 - 19:29 | Informe spam
Hola un trigger es simple de hacer, pero no entiendo el ejemplo que queres
representar :(

Si yo tengo un maestro de Articulos y luego una tabla de movimientos de
Stock, vos decis que no se puedan hacer movimientos de articulos que no
existan en la tabla Art y que cuando se haga un movimiento se actualice la
cabecera del articulo con el nuevo saldo?

Decime si es esta tu idea si¡?

Gracias


Salu2
Maxi

Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET

MSN:
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Leonardo Azpurua" <l e o n a r d o (arroba) m v p s (punto) o r g> escribió
en el mensaje news:
Hola.

Alguien preguntó acerca de la utilidad de los Triggers en el grupo de vb.


Lo
referí aquí, pero para darle una idea, le describí el siguiente ejemplo:

"Supón que tienes una tabla de artículos (A) y una de detalles de
movimientos
para esos artículos (D).

Se quiere:
1.- Que las existencias de los articulos en la tabla (A) sólo puedan
variar a consecuencia del registro de un movimiento.
2.- Que el registro de un movimiento actualice automáticamente la
existencia de las tablas de productos.

discúlpame por no utilizar la sintaxis de ningun SGBD, pero no se ninguna


lo
suficientemente bien (me gusta que mis aplicaciones trabajen con


cualquiera)
de manera que describo los procedimientos en seudocódigo:

Defines un Trigger para el UPDATE de la tabla A:
Si Nuevo.Existencia <> Original.Existencia THEN
Si varTriggerDetalles = Falso
Rechazar el Cambio y Dar Error
De Lo Contrario
varTriggerDetalles = Falso
Fin Si
Fin Si

y defines un Trigger para el INSERT de la tabla D:
varTriggerDetalles = VERDADERO
Ejecutar UPDATE A SET Existencia = Existencia + D.Entradas -


D.Salidas"

pero me quedé con la curiosidad de cómo se escribiría eso mismo en


Transact
(además que no entiendo como se pueden definir variables persistentes (el
"varTriggerDetalles" que se setea en el INSERT y se lee en el UPDATE).

Claro que podría revisar los BOL y consultar algunos ejemplos, pero para
Uds., viejos zorros de Transact, debe ser un paseo escribir los dos


ejemplos
con la sintaxis debida, y ando un poco flojo estos días.

Gracias de antemano

Salud!

Leonardo
[MVP Visual Basic]
[Maicrosoft LVP - MOP Certified]
leonardo<arroba>mvps<punto>org







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.661 / Virus Database: 424 - Release Date: 19/04/2004

Preguntas similares