トリガースキーマ(構造)の確認

テーブルやインデックスを作成した場合と同じように、トリガーを作成した時もどのようなCREATE TRIGGER文が実行されたのかがSQLiteの特別なテーブル「sqlite_master」テーブル内に格納されています。このテーブルのデータを取得することで、どのようなCREATE TRIGGER文が実行されたのか確認することができます。

では次のようにSELECT文を実行して下さい。

select * from sqlite_master;

p3-1

次のようなデータが取得できます。(事前に「.mode」コマンドで「mode」を「line」に変更しています)。

sqlite> select * from sqlite_master;
    type = table
    name = goods
tbl_name = goods
rootpage = 2
     sql = CREATE TABLE goods (id integer, name text, price integer, weight real)

    type = table
    name = list
tbl_name = list
rootpage = 3
     sql = CREATE TABLE list(id integer, name text)

    type = trigger
    name = updatetrigger
tbl_name = goods
rootpage = 0
     sql = CREATE TRIGGER updatetrigger update on goods
begin
update list set name = new.name where name = old.name;
end
sqlite>

「sqlite_master」テーブルには3つの行が含まれています。「type」カラムの値が「table」のものはテーブル、「trigger」のものはトリガーです。トリガーのものを確認すると、トリガー名や対象のテーブル名、そしてトリガーを作成する時に実行されたSQL文を確認することができます。

このように「sqlite_master」テーブルを参照すれば作成済みのテーブルやトリガーに関する情報を取得できます。特定のトリガーに関する情報だけを取得したい場合はWHERE句と組み合わせて下さい。

.schemaコマンド

スキーマに関する情報だけ取得したい場合にはSQLiteコマンドの「.schema」でも確認できます。

.schema ?TABLE?

引数を省略すれば全てのテーブルやトリガーのスキーマ情報を表示します。また引数にテーブル名を指定すると、テーブル名に一致するテーブルや指定したテーブル名を対象としたトリガーだけのスキーマ情報を表示することができます。

p3-2