MySQLでトリガーを作成する方法

MySQLでトリガーを作成する方法

この記事の例では、参考のためにMySQLトリガーを作成するための具体的なコードを共有しています。具体的な内容は次のとおりです。

例を見てみましょう:

#テーブルを作成します。DROP TABLE IF EXISTS t_attendance;
テーブル t_attendance を作成します (
 job_no VARCHAR(30) デフォルト ''
 操作時間 VARCHAR(20) デフォルト ''
 インデックスindex_operateTime(operateTime)、
 INDEX index_jobNo(ジョブ番号)
) エンジン=INNODB デフォルト文字セット=utf8


#トリガーを作成する DELIMITER $
挿入後にトリガー t_afterinsert_on_doorlog を作成する 
t_doorlogの各行 
始める
 jobno VARCHAR(30)を宣言します。
 time1 VARCHAR(20)を宣言します。
 SET jobno = (SELECT job_num FROM tb_park_user_base WHERE card_num = new.cardNo);
 time1 = DATE_FORMAT(new.operateTime,'%Y%m%d%H%i%s') を設定します。
 t_attendance (job_no, operatime) に挿入します。 
 価値観
  (ジョブ番号、時間1);
終了$

分析例:

まず、トリガーに格納するテーブルt_attendanceを作成します。

DELIMITER $ は、次の文が "$" で終了することを MySQL に伝えることを意味します。この文がないと、次の文は失敗し、MySQL はどの文が終了するかを判断できません。

CREATE TRIGGER t_afterinsert_on_doorlog AFTER INSERT ON t_doorlog FOR EACH ROW トリガーを作成するための構文: AFTER には同じレベルのキーワードとして BEFORE があり、INSERT には同じレベルのキーワードとして DELETE と UPDATE があります。

DECLARE jobno VARCHAR(30)はトリガーSQLでローカル変数を宣言することを意味します。

SET jobno=.... は、ローカル変数に値を割り当てることを意味します。= の右側には、クエリ ステートメントまたは関数メソッドを指定できます。

補足トリガー:

トリガーは、特定のテーブル内のデータが挿入、削除、または変更されたときに実行される特別なストアド プロシージャです。データベース自体の標準機能よりも高度で複雑なデータ制御機能を備えています。

データベース トリガーには次の機能があります。

1. セキュリティ。データベースの値に基づいて、ユーザーにデータベースを操作するための特定の権限を与えることができます。

# 時間に基づいてユーザー操作を制限できます。たとえば、仕事が終わった後や休日にはデータベースのデータを変更できません。

# データベース内のデータに基づいて、株価が一度に 10% 以上上昇しないようにするなど、ユーザー操作を制限できます。

2. 監査。データベース上のユーザー操作を追跡できます。

# ユーザーがデータベースを操作するために使用する監査ステートメント。

# ユーザーによるデータベースの更新を監査テーブルに書き込みます。

3. 複雑なデータ整合性ルールを実装する

# 非標準のデータ整合性チェックと制約を実装します。トリガーはルールよりも複雑な制限を作成できます。ルールとは異なり、トリガーは列またはデータベース オブジェクトを参照できます。たとえば、トリガーにより、マージンを超える先物取引の試みが取り消される可能性があります。

# 変更可能なデフォルト値を提供します。

4. 複雑で非標準のデータベース関連の整合性ルールを実装します。トリガーは、データベース内の関連テーブルに対して連続更新を実行できます。たとえば、auths テーブルの author_code 列の削除トリガーにより、他のテーブル内の一致する行が削除される可能性があります。

# 変更または削除する場合、他のテーブル内の一致する行もカスケード変更または削除します。

# 変更または削除する場合、他のテーブル内の一致する行を NULL 値に設定します。

# 変更または削除する場合、他のテーブル内の一致する行をカスケードでデフォルト値に設定します。

# トリガーは、関連する整合性を破壊する変更を拒否またはロールバックし、データを更新しようとするトランザクションをキャンセルできます。このトリガーは、主キーと一致しない外部キーが挿入されたときにトリガーされます。たとえば、books.author_code 列に挿入トリガーを作成して、新しい値が auths.author_code 列の値と一致しない場合は挿入がロールバックされるようにすることができます。

5. テーブル内のデータをリアルタイムで同期的にコピーします。

6. データ値を自動的に計算し、データ値が特定の要件に達した場合は特定の処理を実行します。例えば、会社の口座の資金が50,000元未満の場合、警告データがすぐに財務担当者に送信されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQLトリガーの使用法の詳細な説明
  • MySQLトリガーの簡単な概要と例
  • MYSQL でトリガー権限を設定する問題を解決する方法
  • 2つのテーブル間でデータを同期するためのmysqlトリガー
  • MySQLトリガーの概念、原理、使用法の詳細な説明
  • MySQL トリガーとストアド プロシージャをテストする方法
  • MySQL はトリガーでレコードの挿入または更新を中断しますか?
  • MySQL のトリガーの簡単な紹介と使用例
  • トリガーの適用に関する MySQL の注意事項
  • MySQL トリガーの使用シナリオとメソッドの例

<<:  JavaScriptは組み込みオブジェクトのプロトタイプメソッド実装を追加します

>>:  Ubuntu にグラフィック ドライバーが正常にインストールされたかどうかを確認する方法

推薦する

Linux でファイルを削除するときに「操作は許可されていません」というプロンプトが表示される場合の対処方法

同僚からよく聞かれるのですが、ファイル/ディレクトリを削除すると「操作は許可されていません」というエ...

get メソッドによる HTML フォームの値転送の例

google.htmlインターフェースは図の通りですコードは図のとおりです: (比較的シンプルで、入...

MySQL の current_timestamp の落とし穴とその解決策を共有する

目次MySQL の current_timestamp の落とし穴エラーを報告する私の解決策mysq...

Dockerコンテナ同士を接続する3つの方法の詳しい説明

Docker コンテナ間の相互接続と通信には 3 つの方法があります。 Docker 内部ネットワー...

mysqlは複数の主キーを設定する操作を実装します

ユーザーテーブル、ID番号は一意である必要があります、携帯電話番号、電子メールアドレスは一意である必...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

MySQL データのバックアップと復元のサンプル コード

1. データのバックアップ1. mysqldumpコマンドを使用してバックアップするmysqldum...

CSS XTHML の記述標準とよくある問題の概要 (ページ最適化)

プロジェクトドキュメントディレクトリDiv+CSS 命名規則 - 4 - Div+css 命名規則 ...

vue+springbootでログイン認証コードを実現

この記事では、ログイン認証コードを実装するためのvue+springbootの具体的なコードを例とし...

CSSリストのスライドにより、下部に隠れるのを防ぎ、長い画面モデルの処理に適応します。

1. モバイル端末がリストスライドを処理するとき、WeChat には下部にページに戻るボタンが組み...

MySQLでユーザーを作成し、権限を管理する方法

1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...

forループ内のvarの問題の解決

序文var は ES5 における変数宣言方法です。var で変数を宣言するとループ変数がグローバル変...

誰もが登録できるようにJiedaibaoを宣伝するにはどうすればよいでしょうか? ジエダイバオのプロモーション方法とスキル

借財宝は最近人気が出ている携帯電話ローンソフトウェアプラットフォームです。知人同士の貸し借りが特徴で...

30分でReact Hooksを包括的に理解できます

目次概要1. 使用状態1.1 3つの概念に関する質問1.2 例1.3 注記2. リデューサーを使用す...