MySQL トリガーの定義と使用方法の簡単な例

MySQL トリガーの定義と使用方法の簡単な例

この記事では、MySQL トリガーの定義と使用方法について説明します。ご参考までに、詳細は以下の通りです。

文法

CREATE TRIGGER トリガー名- トリガーには、最大 64 文字の名前が必要です。名前の後に区切り文字を続けることもできます。名前は、MySQL の他のオブジェクトとほぼ同じように付けられます。
{ BEFORE | AFTER } -- トリガーには実行時間設定があり、イベント発生前または発生後に設定できます。
{ INSERT | UPDATE | DELETE } -- トリガーするイベントを設定することもできます。挿入、更新、または削除の実行中にトリガーできます。
ON テーブル名- トリガーは特定のテーブルに属します。このテーブルで挿入、更新、または削除操作が実行されると、トリガーがアクティブになります。同じテーブル上の同じイベントに 2 つのトリガーを割り当てることはできません。
FOR EACH ROW -- トリガー実行間隔: FOR EACH ROW 句は、トリガーに対して、テーブル全体に対して 1 回ではなく、1 行おきにアクションを実行するように指示します。
<トリガー SQL ステートメント> -- トリガーには、トリガーされる SQL ステートメントが含まれます。ここでのステ​​ートメントは、複合ステートメントを含む任意の有効なステートメントにすることができますが、ここでのステ​​ートメントの制限は関数の場合と同じです。

例の準備

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

例1: 新しいエントリを追加すると、別のテーブルが追加されます

-- トリガーを作成: t_afterinsert_on_tab1
-- 効果: tab1 テーブルにレコードを追加した後、tab2 テーブルにレコードを自動的に追加します。DROP TRIGGER IF EXISTS t_afterinsert_on_tab1;
トリガー t_afterinsert_on_tab1 を作成する
タブ1に挿入後
各行ごとに
始める
   tab2(tab2_id) に値(new.tab1_id) を挿入します。
終わり;
-- テスト INSERT INTO tab1(tab1_id) values('0001');
-- 結果を確認します SELECT * FROM tab1;
タブ2から*を選択

例 2: 1 つのエントリを削除すると、別のテーブルも削除される

-- トリガーを作成: t_afterdelete_on_tab1
-- 効果: tab1 テーブルのレコードを削除すると、tab2 テーブルの対応するレコードが自動的に削除されます。DROP TRIGGER IF EXISTS t_afterdelete_on_tab1;
トリガー t_afterdelete_on_tab1 を作成する
タブ1の削除後
各行ごとに
始める
   tab2_id=old.tab1_id の tab2 から削除します。
終わり;
-- テスト DELETE FROM tab1 WHERE tab1_id='0001';
-- 結果を確認します SELECT * FROM tab1;
tab2から*を選択します。

例3: 1つの行を更新して別のテーブルの更新をトリガーする

-- トリガーを作成: t_afterupdate_on_tab1
-- 効果: tab1 テーブルのレコードを変更した後、tab2 テーブルの対応するレコードを自動的に更新します。DROP TRIGGER IF EXISTS t_afterupdate_on_tab1;
トリガー t_afterupdate_on_tab1 を作成する
tab1 の更新後
各行ごとに
始める
   tab2 を更新します。tab2_id=new.tab1_id を設定します。tab2_id=old.tab1_id;
終わり;
-- テスト更新 tab1 set tab1_id='0002' WHERE tab1_id='0001';
-- 結果を確認します SELECT * FROM tab1;
tab2から*を選択します。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

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

<<:  nginx httpモジュールのデータ保存構造の概要

>>:  一般的なテーブルコンポーネントの Vue カプセル化の完全な手順記録

推薦する

CSS でインラインブロック要素間のギャップを削除するいくつかの方法の詳細な説明

最近、モバイルページを制作する際には、レイアウトにインラインブロック要素がよく使われますが、インライ...

CSS3のvar()を使用して実行時にscss変数の値を変更する詳細な説明

var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...

Vue ベースの要素ボタン権限実装ソリューション

背景要件: ERP システムに「ボタン権限制御」機能を追加する必要があり、権限の制御粒度をボタン レ...

CSS スタイルにおける中国語フォントのフォントファミリーに対応する英語名の詳細な説明

ソングティ: SimSun太字: SimHeiマイクロソフト YaHei: マイクロソフト YaHe...

MySQL マルチテーブルクエリの具体例

1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...

React 星評価コンポーネントの実装

要件は、製品の評価データを渡すことであり、ページには対応する星の数が表示されます。 1. 異なる評価...

デザインにおいて無視できないインタラクティブデザインにおける製品状態の分析

製品デザインのプロセスにおいて、デザイナーは常に写真を非常に美しくすることを好みます。仮想ページのコ...

Hタグの定義と注意事項について簡単に説明します

結果から判断すると、タイトルを定義するための固定パターンはなく、すべてむしろランダムな感じがします。...

MySQLにおけるACIDトランザクションの実装原理の詳細な説明

導入いつものように、シーンから始めましょう〜インタビュアー:「トランザクションの4つの特性をご存知で...

VueにExcelテーブルプラグインを導入する方法

この記事では、Excelテーブルプラグインを導入するVueの具体的なコードを参考までに共有します。具...

Web デザイン TabIndex 要素

TabIndex は、Tab キーを押して、定義された TabIndex 要素を順番に取得し、各要素...

Reactを使用して画像認識アプリを実装する方法

まずは効果の写真をお見せしましょう。 個人的には効果は問題ないと思います。アプリが写真を学習する時間...

Mac 向け MySQL 5.7.17 のインストールと設定のチュートリアル

1. MySQLをダウンロードする公式サイトのダウンロードページをクリックすると次のページに入ります...

Windows での PyTorch 開発環境のインストール チュートリアル

アナコンダのインストールAnaconda は、Python の使用を容易にするために作成されたソフト...

セマフォによるTomcatの異常終了の解決方法

最近はビッグデータで遊んでいます。友人が私のところに来て、オンラインの Tomcat が不可解に終了...