Oracle Client 9i SQL Plusはexit時にコミットする

つい最近知りました。一見便利なようで実は危険な機能だと思います。本人が意図しないところでコミットをするということは次のようなシナリオが考えられます。

  1. テスト実行前に古いレコードを掃除(コミットは忘れるが本人は消したつもり)
  2. SQLPlusとは別の手段でテスト実行
  3. テスト実行中にデスクトップ上のSQLPlusのWindowをクローズ(ここで本当にコミットされる)
  4. テスト結果を見るとテスト開始しばらくはレコードが存在したような結果が残る。しかし、DB上の当該レコードは消えている。