前回のコラムで紹介したとおり,MySQL 5.0ベータ版がリリースされた。ベータ版のリリースによって,機能がほぼフィックスされた。既にMySQL 5.0の新機能として,本連載の第5回に「MySQL 5.0の新機能ストアド・プロシジャ」と題して紹介している。今回は,リリースされたばかりのMySQL 5.0.4-betaを使用して,MySQL 5.0の新機能であるトリガーとビューを紹介する。
データ更新時に自動実行する「トリガー」
データベース・サーバーのサーバー・サイド処理として,ストアド・プロシジャとトリガーは双璧である。ストアド・プロシジャは,必要な時に呼び出すサブルーチン的な位置付けだ。それに対してトリガーは,テーブルのデータが更新されたときに自動的に実行する。テーブルに対して,INSERT,DELETE,UPDATEの各ステートメントが実行される際に,指定した処理を自動実行する。
なお,現時点では,テーブル名を指定した処理を記述できない。また,CALLなどを呼び出せない。そのため,異なるテーブルにデータを保存するような処理はできない。この制限は将来撤廃される予定だが,現時点では我慢するしかない。
トリガー作成ステートメントの構文
トリガーの作成には,CREATE TRIGGERステートメントを使用する。トリガーは,どのようなタイミングで実行するか指定するため,ストアド・プロシジャと比較すると複雑な構文となっている。
リスト1●CREATE TRIGGERステートメント CREATE TRIGGER トリガー名 タイミング イベント ON 対応テーブル FOR EACH ROW 処理内容;タイミングは,イベント前に処理を実行するか,イベント後に処理を実行するかを指定する。
表1●タイミング
BEFORE | 処理前 |
AFTER | 処理後 |
イベントは,どのような事象に対して処理を実行するかを指定する。レコードの追加,削除,更新のいずれかに対応して処理を行う。
表2●イベント
INSERT | レコードの追加 |
DELETE | レコードの削除 |
UPDATE | レコードの更新 |
処理内容では,カラムを指定するための2つのキーワードが用意されている。
表3●カラムを指定するキーワード
OLD. カラム名 | イベント実行前のカラム値 |
NEW. カラム名 | イベント実行後のカラム値 |
次は,実際にCREATE TRIGGERステートメントを使いトリガーを作成する。