Ich würde mal in Frage stellen, ob so eine Workflow Aktion (Reservierung) über solche Mechnismen sinnvoll ist.
M.E. ist das ein Bestellstatus ("ImWarenKorb"), der den Artikel aus dem Lager entfernt.
Ansonsten:
Die
Query Komponenten, die ich kenne machen automatisches Transaktionshandling und sind nicht fähig, mehrere Befehle zu verarbeiten.
Man kann in PG wie in Deinem Beispiel anonyme Blöcke nutzen, aber (natürlich) auch nicht in 2 separaten Queries.
Wenn es unbedingt sein muss:
Explizite Transaktionsteuerung im Client nutzen, das sperrt aber mehr oder weniger alles, was Du benutzt.
Es gilt eigentlich generell die Regel, Transaktion so kurz wie möglich. Das hat seinen Grund.
Die Probleme, die man sich dadurch einhandelt, kann man u.U. umgehen, indem man eine 2. Connection dafür nutzt.