SQLite3にテーブルにデータが更新update時トリガーを作成する方法

環境
Windows 10 Home 64bit
sqlite 3.37.0

構文
テーブルに対してUPDATEが行われた時にトリガーを設定します。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TRIGGER トリガー名 UPDATE OF カラム名 ON テーブル名
BEGIN
SQL文1;
SQL文2;
xxx
END;
CREATE TRIGGER トリガー名 UPDATE OF カラム名 ON テーブル名 BEGIN SQL文1; SQL文2; xxx END;
CREATE TRIGGER トリガー名 UPDATE OF カラム名 ON テーブル名
 BEGIN
  SQL文1;
  SQL文2;
  xxx
 END;

操作方法
1.テーブルitemを作成します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> create table item(uid integer, uname text, price integer);
sqlite> create table item(uid integer, uname text, price integer);
sqlite> create table item(uid integer, uname text, price integer);

テーブルnewsを作成します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> create table news(uid integer primary key, title text);
sqlite> create table news(uid integer primary key, title text);
sqlite> create table news(uid integer primary key, title text);

2.itemテーブルにデータが更新時にトリガーが起動し、newsテーブルのtitleカラムにデータを記録します。
更新トリガーの作成

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> create trigger triggerupdate update on item
...> begin
...> insert into news(title) values('update trigger opeartion 222');
...> end;
sqlite> create trigger triggerupdate update on item ...> begin ...> insert into news(title) values('update trigger opeartion 222'); ...> end;
sqlite> create trigger triggerupdate update on item
   ...>  begin
   ...>  insert into news(title) values('update trigger opeartion 222');
   ...> end;

3.itemsテーブルへデータを追加します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> insert into item values(666, 'yamada01', 29);
sqlite> insert into item values(666, 'yamada01', 29);
sqlite> insert into item values(666, 'yamada01', 29);

4.itemテーブルへ追加したデータを一部更新します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> update item set uname = 'oosaki' where uid = 666;
sqlite> update item set uname = 'oosaki' where uid = 666;
sqlite> update item set uname = 'oosaki' where uid = 666;

itemテーブルのデータが更新されると同時にトリガーが起動してnewsテーブルにデータを追加しています。

5.更新トリガーの内容を確認します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
sqlite> select * from news;
1|insert trigger opeartion 111
2|insert trigger opeartion 111
3|update trigger opeartion 222
sqlite> select * from news; 1|insert trigger opeartion 111 2|insert trigger opeartion 111 3|update trigger opeartion 222
sqlite> select * from news;
1|insert trigger opeartion 111
2|insert trigger opeartion 111
3|update trigger opeartion 222

 

SQLite

Posted by arkgame