MySQLトリガーについて深く理解するための記事

MySQLトリガーについて深く理解するための記事

学校データベースの学生、コース、sc テーブルに基づいて、次の要件を満たすトリガーを作成します。

數據庫navicat cmd界面運行

1. SC テーブルを挿入または変更するときに、テスト スコアが 0 ~ 100 の範囲外の場合、挿入または変更操作はキャンセルされます。

区切り文字 ;
`tri_update_grade` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「sc」の更新前に「tri_update_grade」トリガーを作成します。
new.grade > 100の場合
sc から削除します。
そうでない場合は、new.grade < 0 の場合
sc から削除します。
終了の場合;
終わり
;;
区切り文字 ;
`tri_insert_grade` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の `sc` に INSERT する前に `tri_insert_grade` トリガーを作成します
new.grade > 100の場合
sc から削除します。
そうでない場合は、new.grade < 0 の場合
sc から削除します。
終了の場合;
終わり
;;

2. SC テーブルに挿入する際、学生のコース選択の合計単位数が 30 を超えると、エラーが報告され、挿入はキャンセルされます。

区切り文字 ;
`tri_insert_credit` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「sc」に挿入する前に「tri_insert_credit」トリガーを作成します。
Student から sum(Ccredit) INTO @sumcred を選択し、SC.Sno=Student.Sno で SC を結合し、Course.Cno=SC.Cno で Course を結合します (WHERE sc.Sno=new.Sno);
(@sumcred>30) の場合
それから
sc から削除します。
終了の場合;
終わり
;;

3. SC表を修正する場合、試験に不合格となった学生のコース選択記録を修正することはできません。

区切り文字 ;
`tri_grade` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の `sc` の更新前に `tri_grade` トリガーを作成します
sc から grade INTO @gra を選択します (sno=new.sno かつ sno=new.sno)。
(@gra >= 60) の場合
それから
new.grade=20 を設定します。
それ以外
sc から削除します。
終了の場合;
終わり
;;

4. STUDENT テーブルに挿入するときに、年齢が空の場合、学生の年齢はすべての学生の平均年齢に設定されます。

区切り文字 ;
`tri_student` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「student」に挿入する前に「tri_student」トリガーを作成します。
学生からavg(Sage) INTO @avgageを選択します。
SET @old_age = new.Sage;
@old_age が NULL の場合
それから
new.Sage=@avgage; を設定します。
終了の場合;
終わり
;;

5. STUDENT テーブルに 2 つの列を追加して、生徒の平均スコアと成績を保存し、SC テーブルに挿入した後、生徒の平均スコアと成績を自動的に維持します (85 ~ 100 の場合、成績は「優秀」、60 ~ 85 の場合、成績は「良好」、60 未満の場合、成績は「不良」)

区切り文字 ;
`tri_comment` が存在する場合はトリガーを削除します。
区切り文字 ;;
各行の「student」の更新前にトリガー「tri_comment」を作成します。
sc から avg(Grade) INTO @avggra を選択します (sno=new.sno);
@avggra > 85の場合
sc を更新し、new.Savg=@avggra、new.Scomment="you" を設定します。
そうでない場合、@avggra > 60 かつ @avggra <= 85 の場合
sc を更新し、new.Savg=@avggra、new.Scomment="you" を設定します。
それ以外
sc を更新し、new.Savg=@avggra、new.Scomment='cha' を設定します。
終了の場合;
終了の場合;
終わり
;;
区切り文字 ;

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL イベントとトリガーのトピックの絞り込み
  • 初心者から熟練者まで使えるMySQLデータベーストリガー
  • MySQL ストアド プロシージャ、トリガー、イベント スケジューラの入門ガイド
  • MySQLトリガートリガー例の詳細な説明
  • MySQL トリガーの使用方法と利点と欠点の紹介
  • バックアップと削除のためにリアルタイムでステートメントを検出するMySQLトリガーの考え方の詳細な説明
  • MySQLトリガーの使用
  • MySQLトリガーの使用
  • MySQLトリガーの使い方を簡単に説明すると

<<:  HTML内の画像はbase64でエンコードされた文字列に直接置き換えられます

>>:  DockerでPython環境をパッケージ化するプロセスの詳細な説明

推薦する

CSS の一部のプロパティの前には「*」または「_」が付きます。

CSS の一部のプロパティの前には「*」または「_」が付きます。さまざまなブラウザを識別する例えば...

CSS クリアフロートクリア:both サンプルコード

今日はフロートのクリアについてお話します。フロートのクリアについてお話する前に、フロートとは何かを理...

MySQL複合クエリの詳細な説明

UNIONの使用ほとんどの SQL クエリは、1 つ以上のテーブルからデータを返す単一の SELEC...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

Vueのwatch、computed、methodsの違いのまとめ

目次1 はじめに2 基本的な使い方2.1 方法2.2 計算プロパティ2.3 リスナーを見る3 3つの...

CSS3はトランジション効果を実現するためにtransitionプロパティを使用する。

物件の詳細な説明transition 属性の目的は、一部の CSS プロパティ (背景など) をスム...

ナビゲーションバーコンポーネントをVueでカプセル化する

はじめに:ナビゲーション バーなどのコンポーネント ベースのアイデアを使用して機能モジュールを完全に...

JS 矢印関数に適さないシナリオは何ですか?

目次概要オブジェクトにメソッドを定義するオブジェクトリテラルオブジェクトプロトタイプ動的コンテキスト...

Win10にmysql8.0.15 winx64をインストールしてサーバーに接続する際に問題が発生しました

1. mysql-8.0.15をダウンロード、インストール、設定する1. 公式サイト (https:...

MySQLのインデックス

序文早速本題に入りましょう。これからお話しするのは次のマインドマップです。まずは印象をつかんでくださ...

Vue3カプセル化メッセージメッセージプロンプトインスタンス関数の詳細な説明

目次Vue3 カプセル化メッセージプロンプトインスタンス関数スタイルレイアウトカプセル化メッセージ....

MYSQL は、指定されたユーザーのランキングとクエリを実装します。ランキング関数 (並列ランキング関数) のサンプルコード

序文この記事は主に、MYSQL でランキングを実現し、指定ユーザーランキング関数 (並列ランキング関...

IDEA が Docker を統合してリモート展開を実現するための手順

1. Dockerサーバーへのリモートアクセスを有効にするdocker が配置されているリモート サ...

MySQL バッチ挿入とユニークインデックスの問題に対する解決策

MySQL バッチ挿入の問題プロジェクトを開発しているときに、古いシステムの基本データを事前にインポ...

Docker イメージ管理の一般的な操作コード例

ミラーリングも Docker のコアコンポーネントの 1 つです。ミラーリングはコンテナ操作の基盤で...