Azure DB連携

Azure SQL Database上でトリガーを作成してみた

あるテーブルに追加(INSERT)/更新(UPDATE)/削除(DELETE)が行われたタイミングで、別のテーブルにデータ操作(追加/更新/削除)を行える機能をトリガーといい、トリガーはAzure上のSQL Database上で作成することができる。

今回は、Azure SQL Database上でトリガーを作成してみたので、そのSQLや実行結果を共有する。

前提条件

以下の記事に従って、Azure SQL Databaseを作成済であること。

Azure Potal上でSQLデータベースを作成してみたAzure Portal上では、常に最新の安定したバージョンの SQL Serverデータベースである「SQL データベース」が利用でき...

作成済のAzure SQL Databaseの概要を画面表示すると、以下のようになる。
前提条件

また、下記記事のように、A5M2を利用して作成済のAzure SQL Databaseに接続できていること。

A5M2を利用して各DBに接続してみたA5M2(A5:SQL Mk-2)は、SQL文の入力支援やER図作成などの機能を備えていて、Oracle、MySQL、PostgreSQ...

やってみたこと

  1. USER_DETAILテーブルの追加
  2. トリガーの作成
  3. トリガーによるテーブル更新確認
  4. トリガーの削除

USER_DETAILテーブルの追加

トリガーにより更新されるテーブルとして、USER_DETAILテーブルを作成しデータ追加する。その手順は、以下の通り。

1) A5M2でAzure SQL Databaseに接続後、以下のSQLを実行し、USER_DETAILテーブルを作成する。

USER_DETAILテーブルの追加_1

2) 以下のSQLを実行し、USER_DETAILテーブルにデータ追加する。

USER_DETAILテーブルの追加_2

なお、上記INSERT文実行後、オートコミットされるものとする。

3) 以下のSQLを実行し、USER_DETAILテーブルのデータを確認する。

USER_DETAILテーブルの追加_3

4) トリガーを発動するテーブルは、以下のUSER_DATAテーブルとする。そのデータを確認した結果は、以下の通り。

USER_DETAILテーブルの追加_4



ウズウズカレッジJavaコースはわかりやすい動画教材と充実した就業サポートで優良企業を目指せるプログラミングスクールだったJavaは、世界中で広く使われていて、現在の需要が高く将来性もある開発言語になります。 https://www.acrovision....

トリガーの作成

USER_DATAテーブルにデータを追加/更新/削除したタイミングで、USER_DETAILテーブルのデータを追加/更新/削除されるようなトリガーを作成する。そのSQLは、以下の通り。

なお、insertedテーブル、deletedテーブルについては、以下のサイトを参照のこと。
https://learn.microsoft.com/ja-jp/sql/relational-databases/triggers/use-the-inserted-and-deleted-tables?view=sql-server-ver16

上記SQLを実行するには、以下のように、プロシージャモードで実行する必要がある。
トリガーの作成_1_1

トリガーの作成_1_2

さらに、作成したトリガーは、以下のSQLを実行することで確認できる。

トリガーの作成_2

なお、トリガーを出力するSQLは、以下のサイトの内容を参考にしている。
https://notepad-blog.com/content/107/

また、上記で出力された「トリガーSQL」は、以下のように、コピーして貼り付けることで再現できる。
トリガーの作成_3

【PR】「Filmora」は初心者でも本格的な動画編集ができる大変便利なツールだった「Filmora」は初心者でも使いやすい動画編集ツールで、テンプレートとして利用できるテキスト・動画・音楽などが充実していると共に、複数...

トリガーによるテーブル更新確認

トリガーが発動するUSER_DATAテーブルに、追加・削除・更新が行った場合の実行結果は、以下の通り。なお、INSERT/DELETE/UPDATE文実行後、オートコミットされるものとする。

1) USER_DATAテーブル、USER_DETAILテーブルの内容は、以下の通りとする。

トリガーによるテーブル更新確認_1_1

トリガーによるテーブル更新確認_1_2

2) USER_DATAテーブルにデータを1件追加する。

トリガーによるテーブル更新確認_2

3) 2)実行後のUSER_DATAテーブル、USER_DETAILテーブルの内容は以下の通りで、トリガーの影響でUSER_DETAILテーブルにデータ追加されたことが確認できる。

トリガーによるテーブル更新確認_3_1

トリガーによるテーブル更新確認_3_2

4) USER_DATAテーブルからデータを1件削除する。

トリガーによるテーブル更新確認_4

5) 4)実行後のUSER_DATAテーブル、USER_DETAILテーブルの内容は以下の通りで、トリガーの影響でUSER_DETAILテーブルからデータ削除されたことが確認できる。

トリガーによるテーブル更新確認_5_1

トリガーによるテーブル更新確認_5_2

6) USER_DATAテーブルのデータを1件更新する。

トリガーによるテーブル更新確認_6

7) 6)実行後のUSER_DATAテーブル、USER_DETAILテーブルの内容は以下の通りで、トリガーの影響でUSER_DETAILテーブルのデータが更新(削除後に追加)されたことが確認できる。

トリガーによるテーブル更新確認_7_1

トリガーによるテーブル更新確認_7_2

トリガーの削除

トリガーの削除は、DROP TRIGGER文で行える。

トリガーの削除_1

さらに、指定したトリガーが削除されたかどうかは、以下のSQLを実行することで確認できる。

トリガーの削除_2

試しに、トリガーが削除された状態で、USER_DATAテーブルにデータを1件追加する。

トリガーの削除_3

実行後のUSER_DATAテーブル、USER_DETAILテーブルの内容は以下の通りで、トリガーが無いのでUSER_DETAILテーブルが更新されないことが確認できる。

トリガーの削除_4_1

トリガーの削除_4_2

要点まとめ

  • あるテーブルに追加(INSERT)/更新(UPDATE)/削除(DELETE)が行われたタイミングで、別のテーブルにデータ操作(追加/更新/削除)を行える機能をトリガーという。
  • Azure上のSQL Database上で、トリガーを作成できる。