タグ

ブックマーク / www.drk7.jp (2)

  • Oracle の MERGE 構文に関する備忘録 - バインド変数の扱い方

    DB アプリを書いていると、どうしても使いたくなるのが UPSERT 機能。 実際には UPSERT という構文はありませんが、意味としてはレコードがあれば UPDATE で更新し、レコードがなければ INSERT で追加をするってことです。 従って、普通に書くなら、SELECT → UPDATE/INSERT と場合分けというロジックでプログラムを書くわけですが、トランザクションで考えるとコレが意外とやっかいなときがあります。そのような場合は SELECT FOR UPDATE とか使って行ロックをかけたりする訳なのですが、これまた予期せぬロック待ちの元になったりする場合があり得るので、あまり人に書かせたくない。 Oracle には UPSERT に相当する構文として MERGE 構文があるので、結構重宝します。ただし Oracle9 以降で実装された機能なのですが、今時 8i 以前を使

    ajapo
    ajapo 2008/07/06
    MERGE文でDUAL表を使ってUPSERTする。
  • Windows で別のプロセスが使用中ですファイルを消す方法

    Template::ToolKit のファイルキャッシュの拡張子って .ttc を使うことが多いわけですが、この拡張子、実は Windows 上では True Type コレクションっていう特別な意味を持つ拡張子に割り当てられています。特別な意味っつーのは、True Type Font をまとめて1つにしたファイルのこと(多分・・・)を指すって意味なのですが、間違ってダブルクリックでもしようものならそのファイルを Font ファイルを勘違いしてインストールしようとし始めます。 当然 Font ファイルではないのでインストールは失敗するのですが、一度でもインストールを試みると消せないファイルの化けてしまいます。懸想としてもこんなエラーがでます。 「別のプロセスがこのファイルを開いているので、操作を完了できません」 なんて訳のわからないことをほざきます。システムの復元とかレジストリを調査したり

    ajapo
    ajapo 2007/08/17
    ハンドルからプロセスを追跡してkill or close
  • 1