タグ

2015年5月15日のブックマーク (2件)

  • ORACLE/TRIGGER編 - オラクルちょこっとリファレンス

    TRIGGER(トリガー) トリガーとは、ある条件に合致した操作が行われた場合に、実行されるオブジェクトです。例えばあるテーブルが更新されたら、他のテーブルに挿入を行うというような感じです。 ただ、実際のシステムでトリガーを使いすぎると仕組みが複雑になり、分かりづらくなってしまうので、多用は避けたほうが無難です。 トリガーの作成 トリガーの作成には、CREATE TRIGGER句を使用します。 CREATE TRIGGER構文 CREATE [ OR REPLACE ] TRIGGER トリガー名 { BEFORE | AFTER | INSTEAD OF } { INSERT | UPDATE [OF 列名,...] | DELETE } [OR {INSERT | UPDATE [OF 列名,...] | DELETE }] [... ] ON テーブル名 [ FOR EACH ROW

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

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