लेन-देन अलगाव स्तर 'serializable' का उपयोग करने का सबसे आसान तरीका प्रतीत होता है, जो प्रेत पढ़ने को रोकता है (अन्य लोग डेटा डालने से जो आपके लेनदेन के दौरान पिछले चयन को संतुष्ट करेगा)।
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);
Oracle के "MERGE" स्टेटमेंट जैसी तकनीकें भी हैं - एक सिंगल स्टेटमेंट जो 'इन्सर्ट या अपडेट' करता है, इस पर निर्भर करता है कि डेटा है या नहीं। मुझे नहीं पता कि पोस्टग्रेस के बराबर है, लेकिन 'नकली इसे' करने की तकनीकें हैं - उदाहरण देखें। INSERT कैसे लिखें IF NOT EXISTS मानक SQL में क्वेरीज़ ।