MS AccessでBEFOREトリガー
本日も昨日に続き、MS Accessトリガの話題である。
MS AccessでINSERT、DELETE、UPDATEのAFTERトリガを作成することに成功した。SQL命令でトリガの中身を書くことができないので、なんとももどかしい感じである。
前の記事
MS Accessでトリガー
しかし、テキストで命令を書いていくプログラミングに不慣れな方にとっては、GUI画面でマクロを組んでいく、という方法が好まれていると思われる。
トリガーのBEFORE/AFTER
それは、さておき、先日紹介できなかった、BEFOREトリガについて解説しようと思う。
AFTERトリガは、レコードの追加、削除、更新のデータベース処理後に発生する。レコードの追加トリガは、INSERT命令が実行された後にイベントが上がり発火する。
DELETEトリガはDELETE命令の実行後、UPDATEトリガはUPDATE命令の実行後。
これらのAFTERトリガで処理すべき内容は、データの整合性を保持するようなものやログ的なものになるであろう。データの整合性は、外部参照整合制約(外部キー)を作成しておけばある程度は自動化できる。外部キーを使えないような特殊な場合とか、データベースアクセスの履歴を常に保存しておきたい、とか、データのバックアップを自動的にやりたいとか、そういった用途にAFTERトリガが使用される。
BEFOREトリガでは、これもまた、データの整合性を保持するような機能を実現できる。ログ的な用途で使用してもよいが、あまり使用されないと思う。
AFTERトリガでは、データベース操作をエラーで終了させることはできない。なぜなら、データベース操作処理が終わってしまってから呼び出されるものだから。
BEFOREトリガは、データベース操作処理の前に先立って呼び出されるので、そこでエラーチェックすることができる。不正値が与えられたら、データベース操作をエラーで終わらせることができるのである。
変更前トリガ
変更前トリガを以下のように作成したみた。
これで、fooテーブルのb列を、999、9999、99999の何れかの値で更新をかけようとするとエラーが発生するようになる。
削除前トリガ
同じ要領で削除前トリガを作成。
これで、fooテーブルのb列が、1、2、3の何れかの値であるレコードを削除しようとするとエラーとなり、削除できなくなる。
Accessでもトリガを作成できることがわかった。
しかしながら、SQLのCREATE TRIGGER命令は使用しないし、トリガの中身をSQLで記述することもできないので、Accessでは、SQLを使ってトリガを作成することはできない、ということにしておく。
SQLポケリは更新しないとですね。

Access クエリ 徹底活用ガイド ~仕事の現場で即使える
- 作者: 朝井 淳
- 出版社/メーカー: 技術評論社
- 発売日: 2018/05/25
- メディア: 大型本
投稿者プロフィール

-
システムエンジニア
喋れる言語:日本語、C言語、SQL、JavaScript
最新の投稿
コンピューター関係の記事2025年4月26日アイキャッチ画像にSQLアイコンとJSONアイコンが欲しい
コンピューター関係の記事2025年4月23日AdSense審査に無事パス
コンピューター関係の記事2025年4月22日SeesaaでSSブログ復活【wordpressに記事を移行する】
コンピューター関係の記事2025年4月22日SSブログが無くなった余波は大きい