トリガースキーマ(構造)を確認する

SQLite の環境でトリガーがどのようにどのような CREATE 文を使って作成されたのかについて確認する方法について解説します。 sqlite_master テーブルを利用する方法と .schema コマンドを使用する方法の二通りがあります。

(Last modified: )

sqlite_masterテーブルから取得する

まず最初は sqlite_master テーブルを利用する方法です。次のように SQL 文を実行して下さい。

select * from sqlite_master;

sqlite_masterテーブルから取得する(1)

作成済のテーブルやトリガーに関するデータが取得できます。今回取得したデータの中でトリガーに関するデータは次のものです。

    type = trigger
    name = updateproduct
tbl_name = product
rootpage = 0
     sql = CREATE TRIGGER updateproduct update of name on product
begin
update history set name = new.name where name = old.name;
end

type カラムにはトリガーの場合は trigger と表示されます(テーブルの場合は table です)。 name カラムにはトリガー名、 tbl_name カラムにはトリガーの対象のテーブル名、 sql カラムにはトリガーを作成した時の SQL 文が表示されます。

トリガーに関するデータだけを表示するには、 WHERE 句を使い次のように実行します。

select * from sqlite_master where type = 'trigger';

sqlite_masterテーブルから取得する(2)

.schemaコマンドを使って取得する

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

.schema
.schema ?TABLE?

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

では実際に試してみます。

.schema

.schemaコマンドを使って取得する(1)

現在データベースの中に作成されている 4 つのテーブル及び 1 つのトリガーに関する CREATE 文が表示されました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。