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

Trigger après modification

4 réponses
Avatar
Patrick
Bonjour,

Dans un trigger "AFTER UPDATE", est-il possible de connaître la valeur avant
et après la modification ? J'en aurais besoin pour mettre à jour des tables
qui en utilisent la valeur.

Merci.

--
Patrick

4 réponses

Avatar
Philippe Bouchardy
Bonjour Patrick,

Vous pouvez faire référence aux tables deleted / inserted de manière à
récupérer les données avant et après leurs modifications, prenons pour
exemple la table suivante :

Customers :
customerId : int
businessName : varchar(50)

Voici un exemple de triggers qui permettrait de récupérer les anciennes et
les nouvelles valeurs

create trigger trg_before_update
on dbo.Customers
for update as
if update (businessName) -- si la colonne est mise à jour

-- déclaration de deux variables qui vont permettre de stocker les
données
declare @old_businessName varchar(50), @new_businessName varchar(50)

begin
-- récupération de l'ancienne valeur
select @old_businessName = deleted.businessName from deleted

-- récupération de la nouvelle valeur
select @new_businessName = inserted.businessName from inserted

-- dans votre cas vous allez procéder a l'update de la table 'report3'
-- ici on affiche juste le contenu de nos variables pour tester
print 'old : ' + @old_businessName
print 'new: ' + @new_businessName
end

Cordialement,

Philippe


"Patrick" wrote in message
news:
Bonjour,

Dans un trigger "AFTER UPDATE", est-il possible de connaître la valeur
avant
et après la modification ? J'en aurais besoin pour mettre à jour des
tables
qui en utilisent la valeur.

Merci.

--
Patrick


Avatar
Patrick
Merci beaucoup. C'est parfait.

--
Patrick


"Philippe Bouchardy" wrote:

Bonjour Patrick,

Vous pouvez faire référence aux tables deleted / inserted de manière à
récupérer les données avant et après leurs modifications, prenons pour
exemple la table suivante :

Customers :
customerId : int
businessName : varchar(50)

Voici un exemple de triggers qui permettrait de récupérer les anciennes et
les nouvelles valeurs

create trigger trg_before_update
on dbo.Customers
for update as
if update (businessName) -- si la colonne est mise à jour

-- déclaration de deux variables qui vont permettre de stocker les
données
declare @old_businessName varchar(50), @new_businessName varchar(50)

begin
-- récupération de l'ancienne valeur
select @old_businessName = deleted.businessName from deleted

-- récupération de la nouvelle valeur
select @new_businessName = inserted.businessName from inserted

-- dans votre cas vous allez procéder a l'update de la table 'report3'
-- ici on affiche juste le contenu de nos variables pour tester
print 'old : ' + @old_businessName
print 'new: ' + @new_businessName
end

Cordialement,

Philippe


"Patrick" wrote in message
news:
> Bonjour,
>
> Dans un trigger "AFTER UPDATE", est-il possible de connaître la valeur
> avant
> et après la modification ? J'en aurais besoin pour mettre à jour des
> tables
> qui en utilisent la valeur.
>
> Merci.
>
> --
> Patrick





Avatar
Fred BROUARD
Bonjour,

votre code dans le trigger est incorrect car il suppose qu'une seule
ligne ne sera jamais UPDATée à la fois ce qui est faux car un trigger
SQL Server est toujours ensembliste.
Dans le code d'un trigger ne devrait donc jamais figurer des variables
sauf à utiliser un curseur pour lires les lignes des pseudo tables
inserted et deleted.

A +


Philippe Bouchardy a écrit :
Bonjour Patrick,

Vous pouvez faire référence aux tables deleted / inserted de manière à
récupérer les données avant et après leurs modifications, prenons pour
exemple la table suivante :

Customers :
customerId : int
businessName : varchar(50)

Voici un exemple de triggers qui permettrait de récupérer les anciennes et
les nouvelles valeurs

create trigger trg_before_update
on dbo.Customers
for update as
if update (businessName) -- si la colonne est mise à jour

-- déclaration de deux variables qui vont permettre de stocker les
données
declare @old_businessName varchar(50), @new_businessName varchar(50)

begin
-- récupération de l'ancienne valeur
select @old_businessName = deleted.businessName from deleted

-- récupération de la nouvelle valeur
select @new_businessName = inserted.businessName from inserted

-- dans votre cas vous allez procéder a l'update de la table 'report3'
-- ici on affiche juste le contenu de nos variables pour tester
print 'old : ' + @old_businessName
print 'new: ' + @new_businessName
end

Cordialement,

Philippe


"Patrick" wrote in message
news:
Bonjour,

Dans un trigger "AFTER UPDATE", est-il possible de connaître la valeur
avant
et après la modification ? J'en aurais besoin pour mettre à jour des
tables
qui en utilisent la valeur.

Merci.

--
Patrick








--
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.sqlspot.com *************************
Avatar
helios services
Fred BROUARD a écrit :
Bonjour,

votre code dans le trigger est incorrect car il suppose qu'une seule
ligne ne sera jamais UPDATée à la fois ce qui est faux car un trigger
SQL Server est toujours ensembliste.
Dans le code d'un trigger ne devrait donc jamais figurer des variables
sauf à utiliser un curseur pour lires les lignes des pseudo tables
inserted et deleted.

A +


Philippe Bouchardy a écrit :
Bonjour Patrick,

Vous pouvez faire référence aux tables deleted / inserted de manière à
récupérer les données avant et après leurs modifications, prenons pour
exemple la table suivante :

Customers :
customerId : int
businessName : varchar(50)

Voici un exemple de triggers qui permettrait de récupérer les
anciennes et les nouvelles valeurs

create trigger trg_before_update
on dbo.Customers
for update as
if update (businessName) -- si la colonne est mise à jour

-- déclaration de deux variables qui vont permettre de stocker les
données
declare @old_businessName varchar(50), @new_businessName varchar(50)

begin
-- récupération de l'ancienne valeur
select @old_businessName = deleted.businessName from deleted

-- récupération de la nouvelle valeur
select @new_businessName = inserted.businessName from inserted

-- dans votre cas vous allez procéder a l'update de la table
'report3'
-- ici on affiche juste le contenu de nos variables pour tester
print 'old : ' + @old_businessName
print 'new: ' + @new_businessName
end

Cordialement,

Philippe


"Patrick" wrote in message
news:
Bonjour,

Dans un trigger "AFTER UPDATE", est-il possible de connaître la
valeur avant
et après la modification ? J'en aurais besoin pour mettre à jour des
tables
qui en utilisent la valeur.

Merci.

--
Patrick










mais peut on faire confiance à quelqu'un qui prétends coder plus de
65536 valeurs sur 2 octets ?

http://groups.google.com/group/fr.comp.applications.sgbd/msg/621527f995585842?dmode=source





et donc les écrits ont été bannis de wikipedia

--
Dr Thierry HOLZ
HELIOS SERVICES
180 rue de la croix du chene
60250 HEILLES
www.openqm.com02.net
www.pick.com02.net