Můžete si to doma uvařit pomocí LOCK
na stole, nastavení transakcí a poté uvolnění zámku vrácením transakce, která zámek získala. Viz tuto předchozí odpověď
a jeho odkazy pro podrobnosti o tomto přístupu. Zatímco jsem to demonstroval pomocí tří psql
sessions je stejně životaschopné to udělat pomocí bash co-processes, skriptu Python pomocí psycopg2
a multiprocessing
nebo vláknění
moduly atd. Poměrně jednoduché. Aktualizovat :Ve skutečnosti zde je příklad, který jsem právě napsal v pythonu3 .
Pro sofistikovanější testy si vezměte zdrojový kód PostgreSQL a použijte nástroj "isolationtester" v src/test/isolation
což vám umožní psát recepty, které provádějí složité řazení příkazů. Nepodporuje vytváření pomocí PGXS
(i když přidat takovou podporu by pravděpodobně bylo docela triviální), takže musíte zkompilovat celý zdrojový strom PostgreSQL, ale to je dostatečně rychlé. Poběží proti vašemu stávajícímu PostgreSQL, takže není třeba instalovat ten, který jste zkompilovali.
Viz src/test/isolation/README
pro více informací o nástroji pro testování izolace. Dokumenty jsou na zemi trochu tenké, protože se jedná o interní testovací nástroj, ale stávající testovací případy by vám měly pomoci začít. Neváhejte jej vylepšit, aby vyhovoval vašim potřebám, a odešlete patche :)