SQLite3にテーブルにデータが追加insert時トリガーを作成する方法

環境
Windows 10 Home 64bit
sqlite 3.37.0

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
CREATE TRIGGER トリガー名 INSERT ON テーブル名
BEGIN
SQL文1;
SQL文2;
xxx
END;
CREATE TRIGGER トリガー名 INSERT ON テーブル名 BEGIN SQL文1; SQL文2; xxx END;
CREATE TRIGGER トリガー名 INSERT 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 triggerinsert insert on item
...> begin
...> insert into news(title) values('insert trigger opeartion 111');
...> end;
sqlite> create trigger triggerinsert insert on item ...> begin ...> insert into news(title) values('insert trigger opeartion 111'); ...> end;
sqlite> create trigger triggerinsert insert on item
   ...> begin
   ...> insert into news(title) values('insert trigger opeartion 111');
   ...> end;

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

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

itemテーブルへデータが追加すると同時にトリガーが起動してnewsテーブルにデータを追加します。

4.newsテーブルを確認します。

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

 

SQLite

Posted by arkgame