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

Oracle 10gの排他テーブル(読み取り)ロック?

    他のセッションがデータを変更しないようにしたいだけの場合は、発行できます

    LOCK TABLE whatever
    /
    

    これにより、他のセッションによるデータの更新がブロックされますが、他のユーザーによるデータの読み取りをブロックすることはできません。

    Oracleでは読み取り整合性のポリシーを運用しているため、このようなテーブルのロックが必要になることはめったにないことに注意してください。つまり、返される最後の行を実行するのに15分かかるクエリを実行すると、最初の行と一致します。つまり、結果セットが逆の順序で並べ替えられた場合でも、まったく同じ行が表示されます。

    編集

    キューを実装する場合(実際にOracleの組み込みの高度なキューイング機能 )次にSELECT ... FOR UPDATE 行く方法です。この構成により、1つのセッションで1つ以上の行を選択してロックできます。他のセッションでは、ロック解除された行を更新できます。ただし、11gを使用していない限り、本物のキューを実装するのは非常に面倒です。 OracleがSKIP LOCKEDをサポートしているのは、最新バージョンのみです。 句。 詳細



    1. MysqlクエリGROUPbyおよびORDERby

    2. Oracleで主キー列を取得するにはどうすればよいですか?

    3. MariaDBでのLOCATE()のしくみ

    4. MSAccess呼び出しSQLServerストアドプロシージャ