OVH Cloud OVH Cloud

Déclencheur sur insertion ou update

3 réponses
Avatar
Louis POTY
Bonjour,

je débute sous T-SQL, mais avec quelques années de pratique de PL/SQL.....

je me trouve bien embêté avec un déclencheur sur insertion dans lequel j'ai
besoin de positionner une valeur dans une colonne....si j'ai bien compris,
il faut que je fasse un déclencheur de type "instead of", que je récupère
toute les valeurs de l'insertion, et que je refasse un insert avec mes
valeurs. J'en ai 72 à gérer..........donc 72 variables, 72 affectations,
etc....

En PL/SQL, je faisais juste :new.ma_colonne := valeur; et c'était réglé.

Je pense que j'ai du rater quelquechose quelquepart, car il y a sûrement
plus simple. Si quelqu'un peut me mettre sur la voie, un grand merci
d'avance.....

Louis

PS : mon serveur est en SQL 2000.

3 réponses

Avatar
Philippe T [MS]
Bonjour,

Un déclencheur "INSTEAD OF" n'est pas nécessairement la meilleur solution.

Si vous faites un déclancheur "standard", votre INSERT se passe sans que
vous ayez la moindre chose a faire et ce que vous mettez dans le déclancheur
se passe dans ces conditions après votre INSERT. Il suffit donc dans celui
ci de faire un

UPDATE MaTable SET MaColonne = 'mavaleur' FROM MaTable my INNER JOIN
inserted i ON my.MaCle = i.MaCle.


Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Louis POTY" wrote in message
news:
Bonjour,

je débute sous T-SQL, mais avec quelques années de pratique de PL/SQL.....

je me trouve bien embêté avec un déclencheur sur insertion dans lequel
j'ai besoin de positionner une valeur dans une colonne....si j'ai bien
compris, il faut que je fasse un déclencheur de type "instead of", que je
récupère toute les valeurs de l'insertion, et que je refasse un insert
avec mes valeurs. J'en ai 72 à gérer..........donc 72 variables, 72
affectations, etc....

En PL/SQL, je faisais juste :new.ma_colonne := valeur; et c'était réglé.

Je pense que j'ai du rater quelquechose quelquepart, car il y a sûrement
plus simple. Si quelqu'un peut me mettre sur la voie, un grand merci
d'avance.....

Louis

PS : mon serveur est en SQL 2000.



Avatar
Louis POTY
Effectivement, c'est très simple.

Il faut juste intégrer la logique de laisser l'insert se faire, et de
refaire un update par-dessus.

Merci pour le tuyau.


"Philippe T [MS]" a écrit dans le message de
news: %
Bonjour,

Un déclencheur "INSTEAD OF" n'est pas nécessairement la meilleur solution.

Si vous faites un déclancheur "standard", votre INSERT se passe sans que
vous ayez la moindre chose a faire et ce que vous mettez dans le
déclancheur se passe dans ces conditions après votre INSERT. Il suffit
donc dans celui ci de faire un

UPDATE MaTable SET MaColonne = 'mavaleur' FROM MaTable my INNER JOIN
inserted i ON my.MaCle = i.MaCle.


Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Louis POTY" wrote in message
news:
Bonjour,

je débute sous T-SQL, mais avec quelques années de pratique de
PL/SQL.....

je me trouve bien embêté avec un déclencheur sur insertion dans lequel
j'ai besoin de positionner une valeur dans une colonne....si j'ai bien
compris, il faut que je fasse un déclencheur de type "instead of", que je
récupère toute les valeurs de l'insertion, et que je refasse un insert
avec mes valeurs. J'en ai 72 à gérer..........donc 72 variables, 72
affectations, etc....

En PL/SQL, je faisais juste :new.ma_colonne := valeur; et c'était réglé.

Je pense que j'ai du rater quelquechose quelquepart, car il y a sûrement
plus simple. Si quelqu'un peut me mettre sur la voie, un grand merci
d'avance.....

Louis

PS : mon serveur est en SQL 2000.







Avatar
Philippe T [MS]
Bonjour,

Bon courage et attention toutefois a ne pas multiplier les triggers.

Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Louis POTY" wrote in message
news:Oei3vK$
Effectivement, c'est très simple.

Il faut juste intégrer la logique de laisser l'insert se faire, et de
refaire un update par-dessus.

Merci pour le tuyau.


"Philippe T [MS]" a écrit dans le message
de news: %
Bonjour,

Un déclencheur "INSTEAD OF" n'est pas nécessairement la meilleur
solution.

Si vous faites un déclancheur "standard", votre INSERT se passe sans que
vous ayez la moindre chose a faire et ce que vous mettez dans le
déclancheur se passe dans ces conditions après votre INSERT. Il suffit
donc dans celui ci de faire un

UPDATE MaTable SET MaColonne = 'mavaleur' FROM MaTable my INNER JOIN
inserted i ON my.MaCle = i.MaCle.


Phil.
________________________________________________________
Philippe TROTIN
Microsoft Services France http://www.microsoft.com/france
"Louis POTY" wrote in message
news:
Bonjour,

je débute sous T-SQL, mais avec quelques années de pratique de
PL/SQL.....

je me trouve bien embêté avec un déclencheur sur insertion dans lequel
j'ai besoin de positionner une valeur dans une colonne....si j'ai bien
compris, il faut que je fasse un déclencheur de type "instead of", que
je récupère toute les valeurs de l'insertion, et que je refasse un
insert avec mes valeurs. J'en ai 72 à gérer..........donc 72 variables,
72 affectations, etc....

En PL/SQL, je faisais juste :new.ma_colonne := valeur; et c'était réglé.

Je pense que j'ai du rater quelquechose quelquepart, car il y a sûrement
plus simple. Si quelqu'un peut me mettre sur la voie, un grand merci
d'avance.....

Louis

PS : mon serveur est en SQL 2000.