TOPサーバ構築・運用> sampleの実行結果からみる処理の流れ
徹底比較!! PostgreSQL vs MySQLパート2
徹底比較!! PostgreSQL vs MySQLパート2

第7回:トリガ
著者:NTTデータ   藤塚 勤也   2007/9/20
前のページ  1  2  3  4
sampleの実行結果からみる処理の流れ

   以下のリスト4はPostgreSQLの実行結果です。
リスト4:PostgreSQLでの実行結果
sample=# select * from sample; ← (1)
col01
-------
A
1
P
(3 rows)

sample=# select * from logsample; ← (2)
before_col01 | after_col01
--------------+-------------
(0 rows)

sample=# update sample set col01='W' where col01='A'; ← (3)
UPDATE 1
sample=# update sample set col01='W' where col01='1'; ← (4)
UPDATE 1
sample=# select * from logsample; ← (5)
before_col01 | after_col01
--------------+-------------
1            | W
(1 row)

sample=# select * from sample; ← (6)
col01
-------
P
W
W
(3 rows)

   続いてリスト5は、MySQLでの実行結果になります。

リスト5:MySQLでの実行結果
mysql> select * from sample; ← (1)
+-------+
| col01 |
+-------+
| A     |
| 1     |
| P     |
+-------+
3 rows in set (0.00 sec)

mysql> select * from logsample; ← (2)
Empty set (0.00 sec)

mysql> update sample set col01='W' where col01='A'; ← (3)
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update sample set col01='W' where col01='1'; ← (4)
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from logsample; ← (5)
+--------------+-------------+
| before_col01 | after_col01 |
+--------------+-------------+
| 1            | W           |
+--------------+-------------+
1 row in set (0.00 sec)

mysql> select * from sample; ← (6)
+-------+
| col01 |
+-------+
| W     |
| W     |
| P     |
+-------+
3 rows in set (0.00 sec)

   それぞれの流れは以下のようになっています。

1.sampleテーブルの初期状態を確認
col01カラムに3種類の値が存在している。
2.logsampleテーブルの初期状態を確認
1件もレコードが存在していない。
3.sampleテーブルへのUPDATE文実行
col01カラムの値が「A」のレコードを対象にcol01カラムの値を「W」に更新する。トリガは起動されるが、logsampleテーブルへの挿入は実行されない。
4.sampleテーブルへのUPDATE文実行
col01カラムの値が「1」のレコードを対象にcol01カラムの値を「W」に更新する。トリガが起動され、logsampleテーブルへレコードが挿入される。
5.logsampleテーブルの内容確認
1件のレコードが存在している。
6.sampleテーブルの内容確認
2件のレコードの内容が更新されている。

表2:トリガ処理の流れ


最後に

   MySQLのトリガ機能はリリースされてあまり時間も経っていないため、まだまだ発展途上の状況と思います。そのため、新バージョンではトリガの機能向上も予定されているようです。

   なお、トリガは非常に便利な一面もありますが、あまり乱用するとデータベースに対する処理の可視性が悪くなります。このため十分に注意したうえで使用してください。

前のページ  1  2  3  4


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第7回:トリガ
  はじめに
  開発言語
  具体的な例
sampleの実行結果からみる処理の流れ