sqlite トリガーを作成する
sqliteで、トリガーを作成する手順を記述してます。「CREATE TRIGGER」にトリガー名を指定することで可能です。ここでは、実際に実行した結果を画像で掲載してます。
環境
- OS windows11 home
- sqlite 3.37.1
- DB Browser for SQLite 3.12.2
手順
テーブル操作時に指定した処理を実行できるトリガーを作成するには、「CREATE TRIGGER」を使用します。
CREATE TRIGGER トリガー名
[BEFORE | AFTER | INSTEAD OF] [INSERT | UPDATE | DELETE] ON テーブル名
[FOR EACH ROW]
BEGIN
処理;
END;
パラメータ | 説明 |
---|---|
BEFORE | AFTER | INSTEAD OF | トリガーを発動させるタイミング before:データ操作前にトリガーを起動する after:データ操作後にトリガーを起動する instead of:データ操作されるSQL実行時に、SQLは実行しなでトリガーだけ起動 |
FOR EACH ROW | 複数行のデータ操作時に、各行ごとにトリガーを起動 |
実際に、「hoge」テーブルを削除すると履歴をとるために「hoge_history」に削除日を書き込む、
トリガー「trg」を作成してみます。
CREATE TRIGGER trg
AFTER DELETE ON hoge
FOR EACH ROW
BEGIN
INSERT INTO hoge_history(name) values('DELETE');
END;
実行結果を見ると作成されていることが確認できます。
トリガー起動
実際に「hoge」テーブルに「DELETE」を実行してトリガーを発動させてみます。
DELETE FROM hoge WHERE id=3;
テーブル「hoge_history」を確認します。
トリガーが実行されていることが確認できます。
テーブル削除
トリガーで実行されるテーブルを削除すると、対象のテーブルにアクションを行う際にエラーとなります。
「hoge_history」を削除後に、
DROP table hoge_history;
「hoge」テーブルに「DELETE」を実行すると、
DELETE FROM hoge WHERE id=2;
結果: no such table: main.hoge_history
エラーとなります。
-
前の記事
Oracle Database ファイルの読み書きの統計情報を確認する 2023.02.26
-
次の記事
Fork 指定したファイルの履歴を確認する 2023.02.27
コメントを書く