Triggers en Ambientes de alta transaccionalidad

27/04/2004 - 18:02 por Leidy Diana | Informe spam
Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..

Preguntas similare

Leer las respuestas

#1 Liliana Sorrentino
27/04/2004 - 19:03 | Informe spam
Ahora que veo tu consulta en el foro, la respuesta puede ser más completa.
En ese caso yo no lo haría por trigger, sino directamente en el SP de
actualización, que con un simple IF sabés si tenés o no que actualizar la
segunda tabla.
Saludos... Liliana.

"Leidy Diana" escribió en el mensaje
news:4fc001c42c71$0d6620e0$
Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..
Respuesta Responder a este mensaje
#2 Maximiliano D. A.
27/04/2004 - 19:21 | Informe spam
Hola, ademas de lo que indica la amiga Liliana!! si podrias ver cuando
aplicar el trigger.

O sea, si vos decis que si se actualiza tal campo hay que actuar, entonces
en tu Insert pones eso, algo asi como:

CREATE TRIGER ..

INSERT INTO TABLA2 (CAMPO1,CAMPO2...CAMPON)
SELECT INSERTED.CAMPO1,INSERTED.CAMPO2INSERTED.CAMPON
FROM INSERTED INNER JOIN DELETED ON
INSERTED.CAMPO_ID = DELETED.CAMPO_ID
WHERE INSERTED.CAMPOACOMPARAR <> DELETED.CAMPOACOMPARAR

SUERTE




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



"Leidy Diana" escribió en el mensaje
news:4fc001c42c71$0d6620e0$
Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..





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
Respuesta Responder a este mensaje
#3 Manuel Etcheto
27/04/2004 - 21:14 | Informe spam
Hola
Si bien como dice Liliana podrías manejarlo en el store de
actualización, si querés auditar todo me parece que no te
queda otra que el trigger, porque alguien podría
actualizar desde otro lado...
Dentro del trigger tenés la función IF UPDATE(campo) para
los campos que requieran actuar y si no no hacer nada

Suerte
manuel

Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..


.

Respuesta Responder a este mensaje
#4 Leidy Diana
27/04/2004 - 21:37 | Informe spam
Hola muchas gracias por su colaboración pero el caso es
más crítico.
El campo como tal puede ser actualizado desde diferentes
partes por ende debo utilizar el trigger, el problema es
que esta tabla se actualiza constantemente haciendo que el
trigger se dispare y genere bloqueos..No hay forma en sql
server de hacer que el trigger se dispare por un campo de
la tabla? esta opción la permite Oracle.. sql server no la
tendrá?

Hola, ademas de lo que indica la amiga Liliana!! si


podrias ver cuando
aplicar el trigger.

O sea, si vos decis que si se actualiza tal campo hay que


actuar, entonces
en tu Insert pones eso, algo asi como:

CREATE TRIGER ..

INSERT INTO TABLA2 (CAMPO1,CAMPO2...CAMPON)
SELECT INSERTED.CAMPO1,INSERTED.CAMPO2INSERTED.CAMPON
FROM INSERTED INNER JOIN DELETED ON
INSERTED.CAMPO_ID = DELETED.CAMPO_ID
WHERE INSERTED.CAMPOACOMPARAR <> DELETED.CAMPOACOMPARAR

SUERTE




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



"Leidy Diana" escribió en el


mensaje
news:4fc001c42c71$0d6620e0$
Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..





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


.

Respuesta Responder a este mensaje
#5 Maximiliano D. A.
27/04/2004 - 21:50 | Informe spam
Hola, mi ejemplo era para tu trigger pero si te fijas bien solo hace insert
o Update si hay campos que difieren ;-) cosa que es suficientemente rapido.

El trigger para un campo es con If Update, yo no te lo recomiendo para
nada!! pero bueno vos saca tus propias conclusiones del porque ;-), por eso
te mande el ejemplo este.

Suerte


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



"Leidy Diana" escribió en el mensaje
news:519d01c42c8f$1adea1c0$
Hola muchas gracias por su colaboración pero el caso es
más crítico.
El campo como tal puede ser actualizado desde diferentes
partes por ende debo utilizar el trigger, el problema es
que esta tabla se actualiza constantemente haciendo que el
trigger se dispare y genere bloqueos..No hay forma en sql
server de hacer que el trigger se dispare por un campo de
la tabla? esta opción la permite Oracle.. sql server no la
tendrá?

Hola, ademas de lo que indica la amiga Liliana!! si


podrias ver cuando
aplicar el trigger.

O sea, si vos decis que si se actualiza tal campo hay que


actuar, entonces
en tu Insert pones eso, algo asi como:

CREATE TRIGER ..

INSERT INTO TABLA2 (CAMPO1,CAMPO2...CAMPON)
SELECT INSERTED.CAMPO1,INSERTED.CAMPO2INSERTED.CAMPON
FROM INSERTED INNER JOIN DELETED ON
INSERTED.CAMPO_ID = DELETED.CAMPO_ID
WHERE INSERTED.CAMPOACOMPARAR <> DELETED.CAMPOACOMPARAR

SUERTE




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



"Leidy Diana" escribió en el


mensaje
news:4fc001c42c71$0d6620e0$
Hola a todos..

Por favor me pueden colaborar inoformándome que tan
recomendable es utilizar triggers en un ambiente de alta
transaccionalidad.
Mi situación es la sgte: necesito que cada vez que cambie
un campo de una tabla (que se consulta y modifica
demasiadas veces, no solamente este campo) realice la
inserción en otra tabla. Para esto utilicé un trigger for
update y dentro de este trigger verifico si el campo fue
modificado para realizar la inserción respectiva.
Obviamente al ser creado for update siempre se va a
disparar así no modifique el campo que evaluo.. existe
alguna manera de evitar esto? en cuanto a rendimiento de
la bd que puede pasar? es recomendable utilizarlos?}

Muchas gracias por la ayuda que me puedan brindar..





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


.






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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida