sql >> データベース >  >> RDS >> PostgreSQL

データベースにデータを挿入する並行プロセス

    最も簡単な方法は、トランザクション分離レベル「シリアライズ可能」を使用することです。これにより、ファントム読み取り(トランザクション中に以前の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);
    

    Oracleの「MERGE」ステートメントのような手法もあります。これは、データが存在するかどうかに応じて、「挿入または更新」を行う単一のステートメントです。 Postgresに同等のものがあるかどうかはわかりませんが、「偽造」する手法があります。たとえば、 INSERTの記述方法標準SQLでクエリが存在しない場合



    1. MySQLサーバーはRubyonRailsで廃止されました

    2. Ruby on RailsとSSHを使用して、リモートサーバー上のリモートMySQLデータベースにアクセスします

    3. ユニバーサル文字のテーブル照合の選択

    4. このストアドプロシージャがNULL値をテーブルに挿入するのはなぜですか?