Hey Nick, Thanks! Yep that’s an alternative (together with a uniqueness constraint and retry mechanism)
I guess what I’m trying to get my head around is whether and why this would be better than using advisory locks… Cheers Perryn On Thu, 14 Apr 2022 at 10:32 pm, Nick Cleaton <[email protected]> wrote: > On Thu, 14 Apr 2022 at 10:47, Steve Baldwin <[email protected]> > wrote: > >> Ok, so you want to allow _other_ updates to a customer while this process >> is happening? In that case, advisory locks will probably work. The only >> consideration is that the 'id' is a bigint. If your customer id maps to >> that, great. If not (for example we use UUID's), you will need some way to >> convert that id to a bigint. >> > > Alternatively, create a new table that records the start timestamp of the > most recent run of your code block for each customer, and update that as > the first action in your transaction. Then row locks on that table will > protect you from concurrent runs. >
