Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Annuler une modification dans un trigger

5 réponses
Avatar
Yann
Bonjour à tous,
Je commence à travailler sur SQL Server et j'aimerai savoir si il est
possible d'annuler les modifications réalisées par l'utilisateur (dans le cas
update) dans un déclencheur (trigger).

Exemple :
Initialement il y a dans ma table MaTable :
Champ1 / Champ2 / Champ3 / Champ4...
Donnée1/ Donnée2/ Donnée3 / Donnée4

L'utilisateur change une donnée
Champ1 / Champ2 / Champ3 / Champ4...
Donnée1/ Donnée2/ Donnée3 / Donnée5

Pour une raison particulière, le déclencheur ne valide pas la modification
(ici je n'ai changé qu'un champ, mais les conditions de validation se font
sur plusieurs champs) et j'aimerai donc l'annuler... Comment faire ?

Merci du coup de main :o)

--
Bye
Yann

5 réponses

Avatar
Christian Robert
Bonjour,

POur annuler c'est simple utilisez
ROLLBACK TRANSACTION

Celà a pour effet d'annuler la transaction courante, donc tous les
modification effectuées qui ont déclenchées le Trigger

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005


"Yann" a écrit :

Bonjour à tous,
Je commence à travailler sur SQL Server et j'aimerai savoir si il est
possible d'annuler les modifications réalisées par l'utilisateur (dans le cas
update) dans un déclencheur (trigger).

Exemple :
Initialement il y a dans ma table MaTable :
Champ1 / Champ2 / Champ3 / Champ4...
Donnée1/ Donnée2/ Donnée3 / Donnée4

L'utilisateur change une donnée
Champ1 / Champ2 / Champ3 / Champ4...
Donnée1/ Donnée2/ Donnée3 / Donnée5

Pour une raison particulière, le déclencheur ne valide pas la modification
(ici je n'ai changé qu'un champ, mais les conditions de validation se font
sur plusieurs champs) et j'aimerai donc l'annuler... Comment faire ?

Merci du coup de main :o)

--
Bye
Yann


Avatar
Yann
J'avais bien pensé au ROLLBACK, mais j'ai pu lire qu'il fallait démarrer une
TRANSACTION, ce que mon chef ne veux pas faire. Finalement, en fouillant
encore un peu plus dans l'aide, j'ai pu lire que l'instruction INSERT, UPDATE
et DELETE génére des TRANSACTION implicite, donc qu'un simple ROLLBACK suffit.

Merci et désolé pour le dérangement...

--
Bye
Yann


"Christian Robert" a écrit :

Bonjour,

POur annuler c'est simple utilisez
ROLLBACK TRANSACTION

Celà a pour effet d'annuler la transaction courante, donc tous les
modification effectuées qui ont déclenchées le Trigger

--
Cordialement

Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005


"Yann" a écrit :

> Bonjour à tous,
> Je commence à travailler sur SQL Server et j'aimerai savoir si il est
> possible d'annuler les modifications réalisées par l'utilisateur (dans le cas
> update) dans un déclencheur (trigger).
>
> Exemple :
> Initialement il y a dans ma table MaTable :
> Champ1 / Champ2 / Champ3 / Champ4...
> Donnée1/ Donnée2/ Donnée3 / Donnée4
>
> L'utilisateur change une donnée
> Champ1 / Champ2 / Champ3 / Champ4...
> Donnée1/ Donnée2/ Donnée3 / Donnée5
>
> Pour une raison particulière, le déclencheur ne valide pas la modification
> (ici je n'ai changé qu'un champ, mais les conditions de validation se font
> sur plusieurs champs) et j'aimerai donc l'annuler... Comment faire ?
>
> Merci du coup de main :o)
>
> --
> Bye
> Yann


Avatar
SQLpro [MVP]
Yann a écrit :
J'avais bien pensé au ROLLBACK, mais j'ai pu lire qu'il fallait démarrer une
TRANSACTION, ce que mon chef ne veux pas faire.



ha bon, il y a des gens assez stupide pour vous interdire des transactions ?
Si c'est le cas demandez lui comment faire un transfert d'argent de
compte à compte (retrait d'un compte épargne pour alimenter un compte
bancaire) sans transaction, et ce qui se passerais si le serveur plante
entre les deux UPDATE !!!

Je serais vous je changerais de crémerie !


Finalement, en fouillant
encore un peu plus dans l'aide, j'ai pu lire que l'instruction INSERT, UPDATE
et DELETE génére des TRANSACTION implicite, donc qu'un simple ROLLBACK suffit.

Merci et désolé pour le dérangement...




A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************
Avatar
Yann
Pour le moment, je ne vais pas changer de cremerie car je suis en formation
(interne = autodidacte) sur .Net et SQL Server, d'où mes questions, parfois
simplettes, mais dont je n'ai pas réussi à obtenir de réponse satisfaisante
en interne. Mais je viens d'apprendre, grace à l'exemple, l'intêret des
transactions explicites.

Merci SQLpro

--
Bye
Yann


"SQLpro [MVP]" a écrit :

Yann a écrit :
> J'avais bien pensé au ROLLBACK, mais j'ai pu lire qu'il fallait démarrer une
> TRANSACTION, ce que mon chef ne veux pas faire.

ha bon, il y a des gens assez stupide pour vous interdire des transactions ?
Si c'est le cas demandez lui comment faire un transfert d'argent de
compte à compte (retrait d'un compte épargne pour alimenter un compte
bancaire) sans transaction, et ce qui se passerais si le serveur plante
entre les deux UPDATE !!!

Je serais vous je changerais de crémerie !


Finalement, en fouillant
> encore un peu plus dans l'aide, j'ai pu lire que l'instruction INSERT, UPDATE
> et DELETE génére des TRANSACTION implicite, donc qu'un simple ROLLBACK suffit.
>
> Merci et désolé pour le dérangement...
>

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************



Avatar
SQLpro [MVP]
Yann a écrit :
Pour le moment, je ne vais pas changer de cremerie car je suis en formation
(interne = autodidacte) sur .Net et SQL Server, d'où mes questions, parfois
simplettes, mais dont je n'ai pas réussi à obtenir de réponse satisfaisante
en interne. Mais je viens d'apprendre, grace à l'exemple, l'intêret des
transactions explicites.

Merci SQLpro




Et pour de plus amples informations sur le sujet, lisez l'article que
j'ai écrit :
http://sqlpro.developpez.com/cours/sqlaz/techniques/#L1

A +


--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************