OVH Cloud OVH Cloud

Trigger INSTEAD OF

4 réponses
Avatar
Yan
Bonjour,

Quand on fait un trigger INSTEAD OF, on a donc une image des données qui
vont être modifiées. Mais est-ce qu'il est possible de connaître la requête
qui a provoqué le trigger.

Je m'explique : dans mon trigger je fais un contrôle, si c'est pas ok,
j'annule les modif, et si c'est ok, ben j'aimerais bien pouvoir dire "c'est
bon, applique les modif"

Merci pour vos idées

Yan

4 réponses

Avatar
bruno reiter [MVP]
dans le trigger, faire l'UPDATE à nouveau, cette fois ce sera effectif.
dans ton cas est-ce que le instead of se justifie vraiment? pourquoi pas un
after avec un rollback quan pas OK?

br

"Yan" wrote in message
news:41d2be59$0$17392$
Bonjour,

Quand on fait un trigger INSTEAD OF, on a donc une image des données qui
vont être modifiées. Mais est-ce qu'il est possible de connaître la


requête
qui a provoqué le trigger.

Je m'explique : dans mon trigger je fais un contrôle, si c'est pas ok,
j'annule les modif, et si c'est ok, ben j'aimerais bien pouvoir dire


"c'est
bon, applique les modif"

Merci pour vos idées

Yan




Avatar
Yan
Je sais pas quel est la requête update, insert ou delete qui est passée, et
c'est ça que j'aimerais récupérer pour le refaire justement.

Sinon, actuellement, c'est bien un trigger after que je fais. Mais je me
pose des questions au niveau perf, puisque les modif ont été faites, et moi
je rollback derrière. Alors qu'avec le INSTEAD OF, je fais des modif que si
c'est ok. Donc peut-être moins d'opération et peut-être plus vite.
Mais j'ai peut-être tout faux ?

Merci



"bruno reiter [MVP]" <remove.this! a écrit dans le message
de news:%
dans le trigger, faire l'UPDATE à nouveau, cette fois ce sera effectif.
dans ton cas est-ce que le instead of se justifie vraiment? pourquoi pas


un
after avec un rollback quan pas OK?

br

"Yan" wrote in message
news:41d2be59$0$17392$
> Bonjour,
>
> Quand on fait un trigger INSTEAD OF, on a donc une image des données qui
> vont être modifiées. Mais est-ce qu'il est possible de connaître la
requête
> qui a provoqué le trigger.
>
> Je m'explique : dans mon trigger je fais un contrôle, si c'est pas ok,
> j'annule les modif, et si c'est ok, ben j'aimerais bien pouvoir dire
"c'est
> bon, applique les modif"
>
> Merci pour vos idées
>
> Yan
>
>




Avatar
bruno reiter [MVP]
les modifs se trouvent dans les tables inserted (après) et deleted (avant)

au niveau perf ça dépend du nb d'enregs et du pourentage de fait / défait

br

"Yan" wrote in message
news:41d2d3de$0$1327$

Je sais pas quel est la requête update, insert ou delete qui est passée,


et
c'est ça que j'aimerais récupérer pour le refaire justement.

Sinon, actuellement, c'est bien un trigger after que je fais. Mais je me
pose des questions au niveau perf, puisque les modif ont été faites, et


moi
je rollback derrière. Alors qu'avec le INSTEAD OF, je fais des modif que


si
c'est ok. Donc peut-être moins d'opération et peut-être plus vite.
Mais j'ai peut-être tout faux ?

Merci



"bruno reiter [MVP]" <remove.this! a écrit dans le


message
de news:%
> dans le trigger, faire l'UPDATE à nouveau, cette fois ce sera effectif.
> dans ton cas est-ce que le instead of se justifie vraiment? pourquoi pas
un
> after avec un rollback quan pas OK?
>
> br
>
> "Yan" wrote in message
> news:41d2be59$0$17392$
> > Bonjour,
> >
> > Quand on fait un trigger INSTEAD OF, on a donc une image des données


qui
> > vont être modifiées. Mais est-ce qu'il est possible de connaître la
> requête
> > qui a provoqué le trigger.
> >
> > Je m'explique : dans mon trigger je fais un contrôle, si c'est pas ok,
> > j'annule les modif, et si c'est ok, ben j'aimerais bien pouvoir dire
> "c'est
> > bon, applique les modif"
> >
> > Merci pour vos idées
> >
> > Yan
> >
> >
>
>




Avatar
Philippe T [MS]
Bonjour,

La différence c'est que avec un TRIGGER en mode AFTER, la modifications est
faites et ensuite le trigger est déclanché. Avec un TRIGGER en mode INSTEAD
OF, le trigger est déclanché mais si l'on souhaite que le UPDATE / DELETE
soit fait également, il faut aussi le coder dans le TRIGGER.

Phil.
________________________________________________________
Philippe TROTIN http://blogs.msdn.com/ptrotin
Microsoft Services France http://www.microsoft.com/france

"bruno reiter [MVP]" <remove.this! wrote in message
news:
les modifs se trouvent dans les tables inserted (après) et deleted (avant)

au niveau perf ça dépend du nb d'enregs et du pourentage de fait / défait

br

"Yan" wrote in message
news:41d2d3de$0$1327$
>
> Je sais pas quel est la requête update, insert ou delete qui est passée,
et
> c'est ça que j'aimerais récupérer pour le refaire justement.
>
> Sinon, actuellement, c'est bien un trigger after que je fais. Mais je me
> pose des questions au niveau perf, puisque les modif ont été faites, et
moi
> je rollback derrière. Alors qu'avec le INSTEAD OF, je fais des modif que
si
> c'est ok. Donc peut-être moins d'opération et peut-être plus vite.
> Mais j'ai peut-être tout faux ?
>
> Merci
>
>
>
> "bruno reiter [MVP]" <remove.this! a écrit dans le
message
> de news:%
> > dans le trigger, faire l'UPDATE à nouveau, cette fois ce sera


effectif.
> > dans ton cas est-ce que le instead of se justifie vraiment? pourquoi


pas
> un
> > after avec un rollback quan pas OK?
> >
> > br
> >
> > "Yan" wrote in message
> > news:41d2be59$0$17392$
> > > Bonjour,
> > >
> > > Quand on fait un trigger INSTEAD OF, on a donc une image des données
qui
> > > vont être modifiées. Mais est-ce qu'il est possible de connaître la
> > requête
> > > qui a provoqué le trigger.
> > >
> > > Je m'explique : dans mon trigger je fais un contrôle, si c'est pas


ok,
> > > j'annule les modif, et si c'est ok, ben j'aimerais bien pouvoir dire
> > "c'est
> > > bon, applique les modif"
> > >
> > > Merci pour vos idées
> > >
> > > Yan
> > >
> > >
> >
> >
>
>