MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの詳細な説明と簡単な例

MySQLトリガーの簡単な例

文法

CREATE TRIGGER <トリガー名> -- トリガーには、最大 64 文字の名前を付ける必要があります。名前の後に区切り文字を続けることもできます。名前は、MySQL の他のオブジェクトとほぼ同じように付けられます。

{ BEFORE | AFTER } -- トリガーには実行時間設定があり、イベント発生前または発生後に設定できます。

{ INSERT | UPDATE | DELETE } -- トリガーするイベントを設定することもできます。挿入、更新、または削除の実行中にトリガーできます。

ON <テーブル名> -- トリガーは特定のテーブルに属します。このテーブルで挿入、更新、または削除操作が実行されると、トリガーがアクティブになります。同じテーブルの同じイベントに 2 つのトリガーを割り当てることはできません。

FOR EACH ROW -- トリガー実行間隔: FOR EACH ROW 句は、トリガーに対して、テーブル全体に対して 1 回ではなく、1 行おきにアクションを実行するように指示します。

<トリガー SQL ステートメント> -- トリガーには、トリガーされる SQL ステートメントが含まれます。ここでのステ​​ートメントは、複合ステートメントを含む任意の有効なステートメントにすることができますが、ここでのステ​​ートメントの制限は関数の場合と同じです。

--トリガー (CREATE TRIGGER) を作成するには相当の権限が必要ですが、すでに root ユーザーである場合はそれで十分です。これは SQL 標準とは異なります。


例1:

テーブル tab1 を作成

tab1が存在する場合はテーブルを削除します。
テーブルを作成 tab1(
  tab1_id varchar(11)
);

テーブル tab2 を作成

tab2が存在する場合はテーブルを削除します。
テーブル tab2 を作成します (
  tab2_id varchar(11)
);

トリガーを作成する: t_afterinsert_on_tab1

機能: tab1テーブルにレコードを追加すると、レコードは自動的にtab2テーブルに追加されます。

t_afterinsert_on_tab1 が存在する場合はトリガーを削除します。
トリガー t_afterinsert_on_tab1 を作成する 
タブ1に挿入後
各行ごとに
始める
   tab2(tab2_id) に値(new.tab1_id) を挿入します。
終わり;

試してみる

tab1(tab1_id) に値('0001') を挿入します。

結果を見る

tab1から*を選択します。
tab2から*を選択します。

例2:

トリガーの作成: t_afterdelete_on_tab1

機能: tab1 テーブルのレコードを削除すると、tab2 テーブルの対応するレコードも自動的に削除されます。

t_afterdelete_on_tab1 が存在する場合はトリガーを削除します。
トリガー t_afterdelete_on_tab1 を作成する
タブ1の削除後
各行ごとに
始める
   tab2_id=old.tab1_id の tab2 から削除します。
終わり;

試してみる

tab1_id='0001' の場合、tab1 から削除します。

結果を見る

tab1から*を選択します。
tab2から*を選択します。

読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL トリガーの使用シナリオとメソッドの例
  • MySQL トリガーの原理と使用例の分析
  • MySQL トリガー: 複数のトリガー操作の作成例の分析
  • MySQL トリガーの定義と使用方法の簡単な例
  • MySQLトリガーの使用例の詳細
  • MySQLはトリガーを使用してデータベース内のテーブルの行制限を解決します。詳細な説明と例
  • MySQL トリガーを使用してデータを移行および同期するサンプル チュートリアル
  • MySQLトリガーの簡単な概要と例
  • MySQLトリガーの簡単な例と紹介
  • MySQLトリガーの例の詳細な説明

<<:  Nginx を使用して DoNetCore を Alibaba Cloud にデプロイする方法

>>:  Nodejs 配列キューと forEach アプリケーションの詳細な説明

推薦する

Alibaba Cloud Centos6.X でメールを送信する際に発生するさまざまな問題

序文: Webサービスを提供するために、Alibabaクラウドホストを新しくインストールしました。す...

ウェブデザインで注意すべき検索最適化の知識

1. 新サイトホームページのリンクレイアウト1. リンク配置の位置:リンク配置の位置によって、リンク...

CSS3のtransform属性で実装される4つの機能

CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...

Vueタイムラインコンポーネントの使い方

この記事の例では、参考までにvueタイムラインコンポーネントの具体的な実装コードを共有しています。具...

Dockerのオンラインおよびオフラインインストールと一般的なコマンド操作

1. テスト環境名前バージョンセント7.6ドッカー18.09.06 2. オンラインインストールここ...

Vue ローカルコンポーネントデータ共有 Vue.observable() の使用

コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...

HTMLがHikvisionカメラのリアルタイム監視機能を実現

最近、同社は CCFA 関連のいくつかの作業を行う予定で、その 1 つはカメラのリアルタイム監視を再...

CSS設定div背景画像実装コード

コンポーネントに背景画像コントロールを追加するには、次の 2 つの手順だけが必要です。 <表示...

Linux CDの意味と使い方

Linux CD とはどういう意味ですか? Linux では、cd はディレクトリの変更を意味します...

Docker を使用して Spring Boot をデプロイする方法の例

ここでは主に、スタンドアロンのプログラムを生成できるspring-bootと、Mavenプラグインd...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

Vueモバイル端末は画面上で指をスライドさせる方向を判定する

vueモバイル端末は、画面上で指をスライドさせる方向を判断します。具体的な内容は次のとおりです。これ...

プライベートDockerリポジトリであるHarborをインストールするための詳細な手順

Harborのインストールは非常に簡単ですが、Dockerログインで行き詰まってしまいました。このブ...

クラウドサーバーパゴダパネルの詳細なインストール手順

目次0x01. パゴダパネルをインストールする0x02. サーバーポートを開く0x03. ブラウザを...

MySQLのネクストキーロックのロック範囲についての簡単な説明

序文ある日、突然 MySQL の次のキー ロックについて尋ねられ、私の即座の反応は次のようなものでし...