Le but est de trouver l'activité parente de l'activité que nous tentons de mettre à jour - Cette information est stockée ...

'
              
              -- Le but est de trouver l'activité parente de l'activité que nous tentons de mettre à jour
              -- Cette information est stockée dans la table de continuations. Puisque des décisions
              -- sont prises d'après cette valeur, nous devons empêcher les utilisateurs de la mettre à jour après sa lecture ou,
              -- si nous ne trouvons rien, nous devons les empêcher d'insérer une valeur. Pour empêcher l'insertion,
              -- nous mettons un applock sur l'ActivityID et notre protocole exige que, avant qu'une continuation soit
              -- ajoutée, un applock exclusif soi mis sur notre id. Pour empêcher la modification, nous utilisons
              -- des verrouillages de lecture répétables. La valeur pourrait changer si le parent actuel s'avère ne pas être la 
              -- racine, et lorsque cette continuation est établie, nous serions renvoyés à son nouveau parent.
            
              -- Si la trace actuelle est une continuation, RowID est l'ActivityID du parent
              -- Sinon, RowID est l'ID de l'activité actuelle (trace principale ou nouvelle trace)
              DECLARE @@RowID NVARCHAR(128)
              
              DECLARE @@ret INT
              DECLARE @@parentTemp NVARCHAR(128)
              SET @@parentTemp = @ActivityID
              WHILE (@@parentTemp IS NOT NULL)
              BEGIN
                  SET @@RowID = @@parentTemp

                  EXEC @@ret = sp_getapplock @@parentTemp, 'Shared', 'Transaction', 100
                  IF (@@ret < 0)  -- verrouillage non octroyé
                  BEGIN
                    RAISERROR('Verrouillage non octroyé', 16, 1)
                    RETURN
                  END

                  SET @@parentTemp = NULL
                  SELECT @@parentTemp = ParentActivityID 
                  FROM
English
English (United States)
Deutsch (Deutschland)
German (Germany)
Español (España)
Spanish (Spain)
Français (France)
French (France)
日本語
Japanese
한국어
Korean