On Fri, 2025-08-08 at 09:20 +0800, Charles Qi wrote: > Let me clarify the question, when the BEFORE ROW UPDATE trigger is presented > Q. Why do we need to set the XMAX of the new tuple to the current xid?
Because the row gets locked, I'd say (without looking at your example). > which risks piling up multixacts quickly in savepoint/exception block > scenarios. Why is that a problem for you? Perhaps the trigger could use SELECT ... FOR ... to lock the row in the strongest level your transaction needs. A multixact is only necessary if a subtransaction needs to take a stronger lock on the row than what was there before. Yours, Laurenz Albe