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

PostreSQLでのINSERTとトランザクションのシリアル化

    一般的にはありません。 2番目のトランザクションは挿入のみであるため、実行する必要のある一意のインデックスチェックまたはその他のトリガーがない限り、データを無条件に挿入できます。一意のインデックス(主キーを含む)の場合、両方のトランザクションが同じ値で行を更新している場合はブロックされます(例:

    )。
    -- Session 1                           -- Session 2
    CREATE TABLE t (x INT PRIMARY KEY);
    BEGIN;
    INSERT INTO t VALUES (1);
                                           BEGIN;
                                           INSERT INTO t VALUES (1);  -- blocks here
    COMMIT;
                                           -- finally completes with duplicate key error
    

    他のトランザクションによる挿入に影響を与える可能性のある更新の場合、状況はそれほど明白ではありません。この場合、PostgreSQLはまだ「真の」直列化可能性をサポートしていないことを理解しています。他のSQLシステムでどれほど一般的にサポートされているかわかりません。

    http://www.postgresql.org/docs/current/interactive/を参照してくださいmvcc.html



    1. クエリにいくつかの制限を追加するにはどうすればよいですか?

    2. カーボン日付をmysqlタイムスタンプに変換します。

    3. mysqlのJOINで列名が重複しています

    4. チェックボックスはランダムにチェックアウトしています