Най-простият начин изглежда е да използвате нивото на изолация на транзакцията 'serializable', което предотвратява фантомни четения (други хора вмъкват данни, които биха удовлетворили предишен SELECT по време на вашата транзакция).
if (!conn.getMetaData().supportsTransactionIsolationLevel(Connection.TRANSACTION_SERIALIZABLE)) {
// OK, you're hosed. Hope for your sake your drivers supports this isolation level
}
conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
Съществуват и техники като оператора "MERGE" на Oracle - единичен оператор, който прави "вмъкване или актуализиране", в зависимост от това дали данните са там. Не знам дали Postgres има еквивалент, но има техники за „фалшифициране“ -- вижте напр. Как се пише INSERT IF NOT EXISTS заявки в стандартен SQL .