1. トリガーとは何ですか?特定のデータ操作 (挿入/更新/削除) を監視し、関連する操作 (挿入/更新/削除) をトリガーしてデータの整合性を保護できる特殊なタイプのデータベース プログラム。 私の個人的な理解では、これは Java のオブザーバー パターンに少し似ています。オブジェクトが変更されると、オブザーバーも応答します。 Mysql は 5.0 以降でトリガーをサポートしているようです。 2. トリガーを作成するトリガーを作成する 2 つの方法、ステートメントを使用して作成する方法と、Navicat を使用して作成する方法を紹介します。 トリガーを作成するための構文は次のとおりです。CREATE TRIGGER トリガー名 トリガー時間 トリガーイベント ON tb_name FOR EACH ROW トリガーステートメント trigger_name: トリガーの名前 trigger_time: トリガーの時間。BEFORE または AFTER のいずれかになります。 trigger_event: トリガーイベント、INSERT、DELETE、または UPDATE tb_name: トリガーが作成されるテーブルを示します。trigger_stmt: トリガーの本体。SQL ステートメント、または BEGIN と END で囲まれた複数のステートメントになります。したがって、MySQL は次の 6 種類のトリガーを作成すると言えます。 挿入前、削除前、更新前 挿入後、削除後、更新後 トリガー名パラメータは、作成するトリガーの名前を参照します。 BEFORE および AFTER パラメータは、トリガーがイベントの前または後に実行されるタイミングを指定します。 FOR EACH ROW は、トリガー イベントを満たすレコードに対するすべての操作がトリガーをトリガーすることを意味します。 ステートメントを実行する複数のトリガーを作成します。CREATE TRIGGER トリガー名 BEFORE | AFTER トリガーイベント ON テーブル名 FOR EACH ROW 始める ステートメントリストの実行 END NEWとOLDの使用:
フィールドには new/lod という名前を付けることができます。 次に、テスト用に 2 つのテーブルを作成します。 スタテーブル: メインテーブル (観察) `stu` が存在する場合はテーブルを削除します。 テーブル `stu` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id', `name` varchar(255) 文字セット utf8mb4 照合 utf8mb4_general_ci NULL デフォルト NULL コメント 'Name', `age` int(11) NULL デフォルト NULL コメント '年齢', `sort` int(11) NULL デフォルト NULL コメント 'ソートフィールド', BTREE を使用した主キー (`id`) ) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; stu_log テーブル: トリガー関連テーブル (オブザーバー) `stu_log` が存在する場合はテーブルを削除します。 テーブル `stu_log` を作成します ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(255) 文字セット utf8mb4 COLLATE utf8mb4_general_ci NULL デフォルト NULL, `create_time` datetime(0) NULL デフォルト NULL, BTREE を使用した主キー (`id`) ) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; ここで、stu テーブルにデータが追加または削除されると、名前と時刻が記録され、stu_log に同期的にログが記録されるビジネスがあると仮定します。 トリガーを使用しない場合は、この要件を実装するためのコードを記述する必要がありますが、トリガーを使用すると簡単に実現できます。 まず、次のステートメントを使用して挿入トリガーを作成します。 `insert_log` が存在する場合はトリガーを削除します。 デリミタ;; 行ごとに `stu` に INSERT した後にトリガー `add_log` を作成します stu_log(name,create_time) に VALUES(new.`name`,now()) を挿入します。 終わり ;; 区切り文字 ; 実行結果: 次に、Navicat を使用して削除トリガーを作成します。 ステップ1: スタテーブルを右クリックし、「テーブルのデザイン」----トリガーを選択します。 ステップ2: 図に示すようにオプションを入力し、削除前にトリガーを選択します。 ステップ 3: 図に示すように、下の定義ボックスに実行ステートメントを記述します。[保存] をクリックすることを忘れないでください。 声明: 始める stu_log(name,create_time) に VALUES(old.`name`,now()) を挿入します。 終わり 3. トリガーを使うテスト: 新しいデータを追加する stu (name,age) に VALUES('李白',36) を挿入します stu テーブルと stu_log テーブルを表示します。 図の通り、トリガーが発動しました! データの一部を削除するテスト 名前が「Li Bai」である stu から削除 stu テーブルと stu_log テーブルを表示します。 図の通り、トリガーが発動しました! 上記は、MySQL トリガーの使用方法と理解に関する詳細な内容です。MySQL トリガーの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: ブラウザのスクロールバーのスタイルを変更するための純粋な CSS の例
>>: W3C チュートリアル (14): W3C RDF および OWL アクティビティ
以前、UDP を使い始めるために簡単な UDP サーバーとクライアントの例を作成しましたが、実際に使...
最初の方法: skip-grant-tables: 非常に便利なmysql起動パラメータ非常に便利な...
序文JavaScript で記述できるアプリケーションは、最終的には JavaScript で記述さ...
目次序文デモンストレーション効果HTMLコードCSSコードJavascriptコードデモアドレス序文...
共通コンベンションタグ自己終了タグ。閉じる必要はありません (例: img input br hr ...
最近、空港や駅でフライト情報を表示するものと似た大型スクリーンディスプレイのプロジェクトに取り組んで...
ReactライフサイクルReactのライフサイクルを理解するのに役立つ2つの図React ライフサイ...
IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....
1. protoをコンパイルするすべての .proto ファイルを保存するために、src フォルダー...
この記事の例では、コンテンツの計算を実現するためのjsドラッグアンドドロップテーブルの具体的なコード...
CentOS7 システムを使用するのは今回が初めてで、ネットワーク構成を行う際に多くの問題が発生し...
0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...
ドロップダウン付きのテキストボックスを使用すると、ユーザーはドロップダウン リストから入力を選択した...
1. コマンドの紹介cal (カレンダー) コマンドは、現在の日付または指定された日付のグレゴリオ暦...