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

comment identifier une transaction ?

3 réponses
Avatar
cbo
bonjour,

j'ai un ensemble de triggers sur plusieurs tables
ces tables sont modifiées par un programme ADO
(c'est lui qui ouvre et ferme les transactions)

chaque trigger écrit des lignes dans une table

j'aimerai pouvoir déterminer que 2 lignes de cette table ont été
écrites dans la même transaction

j'espérai utiliser "sp_getbindtoken" pour identifier la transaction mais
il parait que ce ne sera plus supporté

y a-t-il une autre solution ?

merci
Chris

3 réponses

Avatar
Fred BROUARD
cbo a écrit :
bonjour,

j'ai un ensemble de triggers sur plusieurs tables
ces tables sont modifiées par un programme ADO
(c'est lui qui ouvre et ferme les transactions)

chaque trigger écrit des lignes dans une table

j'aimerai pouvoir déterminer que 2 lignes de cette table ont été
écrites dans la même transaction

j'espérai utiliser "sp_getbindtoken" pour identifier la transaction mais
il parait que ce ne sera plus supporté

y a-t-il une autre solution ?



Expliquez plus en détail votre problématique avec un exemples précis car
votre demande est peu claire.

Il doit y avoir d'autres moyens auquel vous n'avez sans doute pas pensé !

A +


merci
Chris




--
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
cbo
ok, je précise la demande :

j'ai une table CLIENTS et une table COMMANDES

chacun est dotée d'un trigger FOR INSERT qui insère une ligne dans une
autre table (AUDIT)

lorsque je relis cette table d'audit, je récupère par exemple :
insertion CLIENT 1
insertion COMMANDE 1 du client 1
insertion COMMANDE 2 du client 1
...etc

j'aurai besoin de savoir si la commande 2 a été enregistrée au sein de
la même transaction que le client 1, ou si il s'agit d'un ajout de
commande à un client existant

Si les triggers pouvaient récupérer un identifiant unique pour la
transaction, je pourrais avoir :

transact A, insertion CLIENT 1
transact A insertion COMMANDE 1 du client 1
transact B insertion COMMANDE 2 du client 1

ou

transact A insertion CLIENT 1
transact A insertion COMMANDE 1 du client 1
transact A insertion COMMANDE 2 du client 1


Christian




Fred BROUARD wrote:
cbo a écrit :

bonjour,

j'ai un ensemble de triggers sur plusieurs tables
ces tables sont modifiées par un programme ADO
(c'est lui qui ouvre et ferme les transactions)

chaque trigger écrit des lignes dans une table

j'aimerai pouvoir déterminer que 2 lignes de cette table ont été
écrites dans la même transaction

j'espérai utiliser "sp_getbindtoken" pour identifier la transaction mais
il parait que ce ne sera plus supporté

y a-t-il une autre solution ?




Expliquez plus en détail votre problématique avec un exemples précis car
votre demande est peu claire.

Il doit y avoir d'autres moyens auquel vous n'avez sans doute pas pensé !

A +


merci
Chris







Avatar
Fred BROUARD
a écrit :
ok, je précise la demande :

j'ai une table CLIENTS et une table COMMANDES

chacun est dotée d'un trigger FOR INSERT qui insère une ligne dans une
autre table (AUDIT)

lorsque je relis cette table d'audit, je récupère par exemple :
insertion CLIENT 1
insertion COMMANDE 1 du client 1
insertion COMMANDE 2 du client 1
...etc

j'aurai besoin de savoir si la commande 2 a été enregistrée au sein de
la même transaction que le client 1, ou si il s'agit d'un ajout de
commande à un client existant




si vous fonctionnez en auto commit (comportement par défaut de MS SQL
Server) et si vous n'avez pas déclaré explicitement une transaction (par
BEGIN TRANSACTION) alors chaque ordre est une transaction.
Dans cette transaction figure le trigger.

Le principe est donc :

BEGIN TRANSACTION

INSERT INTO T...

code des triggers INSERT de T...

COMMIT


A +

Autrement dit



Si les triggers pouvaient récupérer un identifiant unique pour la
transaction, je pourrais avoir :

transact A, insertion CLIENT 1
transact A insertion COMMANDE 1 du client 1
transact B insertion COMMANDE 2 du client 1

ou

transact A insertion CLIENT 1
transact A insertion COMMANDE 1 du client 1
transact A insertion COMMANDE 2 du client 1


Christian




Fred BROUARD wrote:
cbo a écrit :

bonjour,

j'ai un ensemble de triggers sur plusieurs tables
ces tables sont modifiées par un programme ADO
(c'est lui qui ouvre et ferme les transactions)

chaque trigger écrit des lignes dans une table

j'aimerai pouvoir déterminer que 2 lignes de cette table ont été
écrites dans la même transaction

j'espérai utiliser "sp_getbindtoken" pour identifier la transaction mais
il parait que ce ne sera plus supporté

y a-t-il une autre solution ?




Expliquez plus en détail votre problématique avec un exemples précis
car votre demande est peu claire.

Il doit y avoir d'autres moyens auquel vous n'avez sans doute pas pensé !

A +


merci
Chris











--
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 ***********************