Cuando se recomiendan los triggers ?

13/10/2004 - 01:26 por Berta Gomez | Informe spam
en cuales usos practicos y tipicos es que se recomienda el uso de triggers
? Basandose en la experiencia, por supuesto, no tanto en la teoria de los
libros.

Berta Gomez

Preguntas similare

Leer las respuestas

#11 Berta Gomez
14/10/2004 - 11:25 | Informe spam
Hola Maxi, esos criterios que expones tambien aplicarian igual si se
tratase de un trigger llamando a un SP ?

O habria algun enfoque distinto para este caso ?


"Maxi" wrote in message
news:
Hola, mira los triggers son una excelente herramienta pero lo ideal no es
abusar de ella.

Yo te cuento como trabajo:

1) Tengo todo armado en SP (esto me hace un poco dependiente del motor de
BDD pero los beneficios obtenidos son muy altos, por lo cual lo hago :-).
Ademas aca tengo un concepto muy particular quizas, si desarrollo para
Sql-Server quiero que funcione al 1000%, si lo hago para Oracle lo mismo!!


y
en los años que me dedico a esto de la informatica me di cuenta que las
cosas genericas que dicen funcionar en todos lados, a la larga son un
problema.. pero bue es tema para discutir en otro momento ;-)

2) Luego si necesito por ej control de auditoria aplico los TR.

Hay casos (por ejemplo tablas que son para sistemas heterogenios) aplico
triggers para cuando se haga las migraciones (por ej DTS o algun proceso
externo) se apliquen algunas reglas que quiera.

O sea, en algunos casos tengo la funcionalidad duplicada, por un lado el
Trigger y ademas el SP, claro esta, que el trigger detecta si fue lanzado


o
no por el SP (podrias revisar este link



http://www.configuracionesintegrale...articulo%4)

Para terminar:

Son buenos o malos los Triggers? no son ni una cosa ni la otra!! son una
herramienta que en muchos casos es la unica forma de resolver algun


problema
(por ej, en un ERP que tenemos aca que es de terceros, hemos realizado con
Triggers muchas politicas de negocios, de otra forma habria sido imposible
hacer semejante tarea)

Otro caso donde se usan (porque no hay por el momento otra solucion) es
cuando necesitas tener Tablas relacionadas pero que estan en distintas BDD
(tambien podrian estar en otro motor de BDD que no fuere SQL), recuerdo


que
en un momento tuve que hacer que un sistema en SQL (una tabla) tenga una
relacion con una tabla en otra BDD (en este caso creo que era Centura) y


con
un trigger pudimos lograr esta integridad :-)

Como ves, no son malos, pero yo trato de usarlos para lo justo y necesario
:-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Berta Gomez" escribió en el mensaje
news:
> en cuales usos practicos y tipicos es que se recomienda el uso de


triggers
> ? Basandose en la experiencia, por supuesto, no tanto en la teoria de


los
> libros.
>
> Berta Gomez
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004


Respuesta Responder a este mensaje
#12 Berta Gomez
14/10/2004 - 11:27 | Informe spam
Hola otra vez, Javier.

Esos criterios que expones tambien aplicarian igual si se tratase de un
trigger llamando a un SP ?

O habria algun enfoque distinto para este caso ? Ventaja o desventaja ?


Muchas gracias por tu acostumbrada ayuda

Berta Gomez


"Javier Loria" wrote in message
news:%
Hola:
Desde el punto de vista de seguridad, rendimiento y facilidad de
mantenimiento de codigo, los procedimientos almacenados son la primera
opcion. La desventaja que tienen es que hay que escribir codigo (mas


lentos
de desarrollar) y te "amarran" a la BD, particularmente si no te cuidas de
usar SQL standard.
La alternativa es usar acceso directo a las tabla con el codigo del
Trigger, que tiene la ventaja que suele requerir menos codigo (mas rapido


de
desarrollar) y mas bien el codigo de SQL queda "escondido".
Revise posteos viejos pare ver un poco la opinion de los gurus de este
foro y me parece que Maxi, Miguel, Lilliana, Ulises y Adrian usan pocos
triggers y usan mas procedimientos. Por otro lado me da la impresion que
Gustavo y otros son mas abiertos a los triggers.
En cuanto al ejemplo: Si tienes un procedimiento que hace inserta un
cheque, para que quieres un trigger? No seria mas facil tener todo el


codigo
junto (funcionalmente agrupado) y de mas facil mantenimiento. Si decides


no
tener un Procedimiento de Cheques, tiene mucho sentido hacer un Trigger.
Me gustaria decirte: usa solo procedimientos y no uses triggers (seria
una respuesta mas facil) pero no seria honesto, con alguna frecuencia uso
triggers y no los cambiaria.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Berta Gomez" wrote in message
news:
> De nuevo el dilema: "Por donde me voy?" :)
>
> > Agrego a la opinion de Isaias que comparto
> > Los triggers son muy importantes cuando das acceso directo a las
> tablas
> > a los usuarios. Sirven para un sinnumero de situaciones. Por otro lado
si
> > preferieres usar procedimientos almacenados para hacer
> Insert/Delete/Update
> > de las tablas, probablemente es mejor hacer la operacion en el
> Procedimiento
> > excepto tal vez para auditorias.
>
>
> Que beneficio me da usar procedimientos almacenados que un trigger ?
>
>
> > Desde el punto de vista de diseno debes tomar una desicion, quiero
> usar
> > Procedimientos Almacenados para las operaciones mencionadas o


prefiero
> usar
> > Triggers?
>
> En que me baso para decidirme ? O es simplemente arbitrario ?
>
> >
> > Una nota, adicional si usas triggers debes ser muy eficiente en el
> > codigo y no hagas "demasiadas" locuras que maten tu aplicacion.
> > Saludos,
> >
>
> Y en los SP no seria igual ? La verdad que estoy confundida. Si yo
> quiero que cuando se haga un insert a una tabla de cheques, me disminuya
el
> balance del suplidor, no seria adecuado poner esto ultimo en el trigger


de
> la tabla y luego en mi aplicacion solo preocuparme por enviar el INSERT.


?
>
>
> Cuando es que se recomienda un SP en vez de un trigger, entonces ?
>
>


Respuesta Responder a este mensaje
#13 Javier Loria
14/10/2004 - 15:48 | Informe spam
Hola:
Si, me parece que se aplican igual, pero para serte sincero muy rara vez
llamo procedimientos almacenados desde triggers.
Me da la impresion que estas "programando en SQL", y SQL es para mi
gusto un mal lenguaje de programacion :( asi que trato de evitarlos
Normalmente mis procedimientos son medio triviales,
borran/insertan/actualizan algunos que otro con una consulta con Joins raros
pero en general no tienen mucha "logica". Dejo la logica para la aplicacion
usando algun lenguaje mas "fuerte" C# o VB.NET.
Suerte,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Berta Gomez" wrote in message
news:#ZV7C$
Hola otra vez, Javier.

Esos criterios que expones tambien aplicarian igual si se tratase de un
trigger llamando a un SP ?

O habria algun enfoque distinto para este caso ? Ventaja o desventaja ?


Muchas gracias por tu acostumbrada ayuda

Berta Gomez


"Javier Loria" wrote in message
news:%
> Hola:
> Desde el punto de vista de seguridad, rendimiento y facilidad de
> mantenimiento de codigo, los procedimientos almacenados son la primera
> opcion. La desventaja que tienen es que hay que escribir codigo (mas
lentos
> de desarrollar) y te "amarran" a la BD, particularmente si no te cuidas


de
> usar SQL standard.
> La alternativa es usar acceso directo a las tabla con el codigo del
> Trigger, que tiene la ventaja que suele requerir menos codigo (mas


rapido
de
> desarrollar) y mas bien el codigo de SQL queda "escondido".
> Revise posteos viejos pare ver un poco la opinion de los gurus de


este
> foro y me parece que Maxi, Miguel, Lilliana, Ulises y Adrian usan pocos
> triggers y usan mas procedimientos. Por otro lado me da la impresion que

> Gustavo y otros son mas abiertos a los triggers.
> En cuanto al ejemplo: Si tienes un procedimiento que hace inserta un
> cheque, para que quieres un trigger? No seria mas facil tener todo el
codigo
> junto (funcionalmente agrupado) y de mas facil mantenimiento. Si decides
no
> tener un Procedimiento de Cheques, tiene mucho sentido hacer un Trigger.
> Me gustaria decirte: usa solo procedimientos y no uses triggers


(seria
> una respuesta mas facil) pero no seria honesto, con alguna frecuencia


uso
> triggers y no los cambiaria.
> Saludos,
>
>
> Javier Loria
> Costa Rica
> Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
> que pueda ser copiado y pegado al Query Analizer.
> La version de SQL y Service Pack tambien ayuda
>
> "Berta Gomez" wrote in message
> news:
> > De nuevo el dilema: "Por donde me voy?" :)
> >
> > > Agrego a la opinion de Isaias que comparto
> > > Los triggers son muy importantes cuando das acceso directo a las
> > tablas
> > > a los usuarios. Sirven para un sinnumero de situaciones. Por otro


lado
> si
> > > preferieres usar procedimientos almacenados para hacer
> > Insert/Delete/Update
> > > de las tablas, probablemente es mejor hacer la operacion en el
> > Procedimiento
> > > excepto tal vez para auditorias.
> >
> >
> > Que beneficio me da usar procedimientos almacenados que un trigger ?
> >
> >
> > > Desde el punto de vista de diseno debes tomar una desicion,


quiero
> > usar
> > > Procedimientos Almacenados para las operaciones mencionadas o
prefiero
> > usar
> > > Triggers?
> >
> > En que me baso para decidirme ? O es simplemente arbitrario ?
> >
> > >
> > > Una nota, adicional si usas triggers debes ser muy eficiente en


el
> > > codigo y no hagas "demasiadas" locuras que maten tu aplicacion.
> > > Saludos,
> > >
> >
> > Y en los SP no seria igual ? La verdad que estoy confundida. Si yo
> > quiero que cuando se haga un insert a una tabla de cheques, me


disminuya
> el
> > balance del suplidor, no seria adecuado poner esto ultimo en el


trigger
de
> > la tabla y luego en mi aplicacion solo preocuparme por enviar el


INSERT.
?
> >
> >
> > Cuando es que se recomienda un SP en vez de un trigger, entonces ?
> >
> >
>
>


Respuesta Responder a este mensaje
#14 El principiante
15/10/2004 - 02:28 | Informe spam
Y que de los triggers INSTEAD OF ? cómo quedan en este esquema ?



"Maxi" wrote in message
news:
Hola, mira los triggers son una excelente herramienta pero lo ideal no es
abusar de ella.

Yo te cuento como trabajo:

1) Tengo todo armado en SP (esto me hace un poco dependiente del motor de
BDD pero los beneficios obtenidos son muy altos, por lo cual lo hago :-).
Ademas aca tengo un concepto muy particular quizas, si desarrollo para
Sql-Server quiero que funcione al 1000%, si lo hago para Oracle lo mismo!!


y
en los años que me dedico a esto de la informatica me di cuenta que las
cosas genericas que dicen funcionar en todos lados, a la larga son un
problema.. pero bue es tema para discutir en otro momento ;-)

2) Luego si necesito por ej control de auditoria aplico los TR.

Hay casos (por ejemplo tablas que son para sistemas heterogenios) aplico
triggers para cuando se haga las migraciones (por ej DTS o algun proceso
externo) se apliquen algunas reglas que quiera.

O sea, en algunos casos tengo la funcionalidad duplicada, por un lado el
Trigger y ademas el SP, claro esta, que el trigger detecta si fue lanzado


o
no por el SP (podrias revisar este link



http://www.configuracionesintegrale...articulo%4)

Para terminar:

Son buenos o malos los Triggers? no son ni una cosa ni la otra!! son una
herramienta que en muchos casos es la unica forma de resolver algun


problema
(por ej, en un ERP que tenemos aca que es de terceros, hemos realizado con
Triggers muchas politicas de negocios, de otra forma habria sido imposible
hacer semejante tarea)

Otro caso donde se usan (porque no hay por el momento otra solucion) es
cuando necesitas tener Tablas relacionadas pero que estan en distintas BDD
(tambien podrian estar en otro motor de BDD que no fuere SQL), recuerdo


que
en un momento tuve que hacer que un sistema en SQL (una tabla) tenga una
relacion con una tabla en otra BDD (en este caso creo que era Centura) y


con
un trigger pudimos lograr esta integridad :-)

Como ves, no son malos, pero yo trato de usarlos para lo justo y necesario
:-)


Salu2
Maxi
Buenos Aires - Argentina
Desarrollador Microsoft 3 Estrellas .NET
Nunca consideres el estudio como una obligación sino como
una oportunidad para penetrar en el bello y maravillosos
mundo del saber.
- Albert Einstein



"Berta Gomez" escribió en el mensaje
news:
> en cuales usos practicos y tipicos es que se recomienda el uso de


triggers
> ? Basandose en la experiencia, por supuesto, no tanto en la teoria de


los
> libros.
>
> Berta Gomez
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.772 / Virus Database: 519 - Release Date: 01/10/2004


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida