この記事では、例を使用して、MySQL トリガーの概要、トリガーの作成方法、およびトリガーの使用上の制限について説明します。ご参考までに、詳細は以下の通りです。 導入 SQL トリガーは、データベース カタログに保存される一連の SQL ステートメントです。 SQL トリガーは、挿入、更新、削除など、テーブルに関連付けられたイベントが発生するたびに実行または起動されます。 SQL トリガーは、特別なタイプのストアド プロシージャと見なすこともできます。 ストアド プロシージャのように直接呼び出されないため、特別です。 トリガーとストアド プロシージャの主な違いは、トリガーはテーブルでデータ変更イベントが実行されると自動的に呼び出されるのに対し、ストアド プロシージャは明示的に呼び出す必要があることです。 次に、SQL トリガーの利点を見てみましょう。
その欠点を見てみましょう:
トリガーは特別なタイプのストアド プロシージャなので、どのように選択すればよいのでしょうか。以下は単なる提案です。ストアド プロシージャを使用して作業を完了できない場合は、SQL トリガーの使用を検討できます。 トリガーを作成する MySQL では、トリガーは、関連付けられたテーブルのデータに変更が加えられたときに自動的に呼び出される一連の SQL ステートメントです。 トリガーは、挿入、更新、または削除ステートメントによってデータが変更される前または後に呼び出されるように定義できます。 MySQL 5.7.2 より前では、テーブルごとに最大 6 つのトリガーを定義できました。彼らの簡単な紹介を見てみましょう:
ただし、MySQL 5.7.2 以降では、同じトリガー イベントとアクション時間に対して複数のトリガーを定義できます。 INSERT、DELETE、または UPDATE ステートメントを使用せずにテーブル内のデータを変更するステートメントを使用すると、テーブルに関連付けられたトリガーは呼び出されません。 たとえば、truncate ステートメントはテーブル内のすべてのデータを削除しますが、テーブルに関連付けられたトリガーは呼び出しません。ただし、REPLACE ステートメントや LOAD DATA ステートメントなど、一部のステートメントではバックグラウンド INSERT ステートメントが使用されます。これらのステートメントを使用すると、テーブルに関連付けられた対応するトリガーが呼び出されます。したがって、テーブルに関連付けられたトリガーごとに一意の名前を使用する必要があります。異なるテーブルに対して同じトリガー名を定義することをお勧めします。トリガーを定義するための構文構造を見てみましょう。 (BEFORE | AFTER)_テーブル名_(INSERT| UPDATE | DELETE) たとえば、before_order_update は、orders テーブルの行が更新される前に呼び出されるトリガーです。別の定義方法を見てみましょう。 テーブル名_(BEFORE | AFTER)_(INSERT | UPDATE | DELETE) たとえば、order_before_update は、上で説明した before_order_update トリガーと同じです。 MySQL はトリガーをデータ ディレクトリ (例: /data/luyaran/) に保存し、tablename.TRG および triggername.TRN という名前のファイルを使用します。
したがって、トリガー ファイルをバックアップ フォルダーにコピーすることで、mysql トリガーをバックアップできます。また、mysqldump ツールを使用してトリガーをバックアップすることもできます。 使用制限 MySQL トリガーは標準 SQL で定義されているすべての機能をカバーしますが、アプリケーションで使用する場合にはいくつかの制限があります。
さて、この記録についてはこれですべてです。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: シェルスクリプトを使用して CentOS7 に python3.8 環境をインストールする (推奨)
>>: Vueカスタムツリーコントロールの使い方の詳細な説明
このブログは、MySQL8.0.15 を正常にインストールしたことを思い出すために書きました。以前は...
Yahoo チームが書いた、ウェブサイトのパフォーマンス最適化に関する記事を読みました。この記事は...
今日、最終プロジェクトに取り組み始めましたが、今年はMySQLデータベースを使用したため、Navic...
目次1. 基本的なSELECT文1. 指定されたフィールドをクエリする3. エイリアスを設定する4....
文章1) Ubuntuイメージをダウンロードする docker プル Ubuntu 2) 画像を見る...
目次$nextTick() $forceUpdate() $セット() .sync——2.3.0 以...
目次1. オプションAPIと組み合わせAPIの違い2. セットアップを具体的にどのように使用するので...
この記事では、centos7 環境でバイナリ インストール パッケージを使用して mysql5.6 ...
ルートパラメータ、ルートナビゲーションガード: ページが戻ったときに検索結果を保持する需要シナリオ:...
1. まず本文にulタグを追加します <!-- 順序なしリスト --> <ul i...
序文1. この記事ではMySQL 8.0バージョンを使用していますバージョン5.0と比較すると、パッ...
背景要件: ERP システムに「ボタン権限制御」機能を追加する必要があり、権限の制御粒度をボタン レ...
物理的に言えば、InnoDB テーブルは、共有テーブルスペース ファイル (ibdata1)、排他テ...
導入: Nginx (エンジン エックスと同じ発音) は、BSD のようなプロトコルに基づいてリリー...
前回のブログ投稿では、レジストリのプライベート ウェアハウスについて説明しました。今日は、Harbo...