Oracle以外のデータベースは、大概SELECTでもロックをかけます。なぜなら、S ELECT進行中に他のユーザーから同じ表に対して更新が行われると読み取り一貫性が保障できなくなるからです。 ところが、OracleはSELECT操作で、ロックはかけません。では、ロックをかけずにどのように読み取り一貫性を保障しているのでしょうか? それは、UNDOデータを持つからです。UNDOデータとは、変更前データのことです。つまり、SELECT進行中に他のユーザーが同じ表のデータを更新したとしても、変 更前のデータはUNDOデータを見せてくれているのです。 そうなのです!Oracleはとても器用に、「この行のデータは更新されていないからデータブロックから取り出して、この行のデータは更新されたからUNDOデータを取り出して・・・」と いうことをやってくれているのです。おもしろいですね。 さて、今日の本題