• I would not update the master table but set up another "queue" table for approval requests.

    Once a "details" row is updates the coresponding key value is inserted by the trigger into the "queue" table, unless it's not already there:

    INSERT INTO Queue (MasterKey)

    SELECT MasterKey FROM Details D

    WHERE NOT EXISTS(select * from Queue Q where Q.MasterKey = D.MasterKey)

    Once Approval process is completed for any particular MaskterKey it's just removed from the Queue table.

    You may wish to add a "time stamp" column to the queue table with default GETDATE().

    Then it will be easy to process requests in order they've been submitted.

    _____________
    Code for TallyGenerator