トリガー:トリガーの使用シナリオと対応するバージョン:トリガーは次の MySQL バージョンで使用できます。
使用シナリオの例:
つまり、テーブルが変更されると自動的に処理されます。 「トリガーから結果セットを返すことは許可されていません」というトリガー エラーが発生した場合は、最後までスクロールして詳細を確認してください。 トリガーの使用:基本的なトリガーを作成します。 各行のproductsにINSERT後にトリガーnewproductを作成する 始める msg VARCHAR(100)を宣言します。 SET msg = "製品が追加されました"; シグナルSQLSTATE 'HY000' SET message_text = msg; 終わり 結果:
説明する: まずトリガーを作成します。 #newproduct トリガーの名前 CREATE TRIGGER newproduct トリガータイミング: BEFORE: トリガーは、それを起動したステートメントの前に起動されます。 AFTER: トリガーは、トリガーを起動したステートメントが完了した後に起動します。 ここでは after を使用します。つまり、トリガー条件は挿入が完了した後です。 msg VARCHAR(100)を宣言します。 注意: 宣言文は複合文で変数を宣言する命令です。msg が宣言されていない場合、MySQL は文の実行時にエラーを報告します。 シグナルSQLSTATE 'HY000' SET message_text = msg; SIGNAL ステートメントが特定の SQLSTATE 値を示している場合、その値は指定された条件を表すために使用されます。 「HY000」は「一般エラー」と呼ばれます。 コマンドで一般的なエラーが発生した場合、次のメッセージが表示されます。 注: この記述はあくまでも私の個人的な理解であり、限られた理解しかありません。もっと良い説明があれば、メッセージを残してください。 トリガー条件は BEGIN で始まり、END で終わります。 トリガーイベント:
トリガーを削除するには:-- トリガーを削除します DROP TRIGGER newproduct; INSERTトリガー:挿入トリガーは、挿入ステートメントの実行前または実行後に実行されます。次の点に注意してください。
例: 新しい注文を挿入するときに、新しい注文番号を生成し、order_numに保存します。 各行の注文の挿入後にトリガー neworder を作成します。 NEW.order_num を @ee に選択します。 注文に INTO を挿入します(注文日、顧客 ID) VALUES(NOW()、10001); @ee を num として選択します。 TRIGGER neworder を削除します。 説明する: 挿入後、および挿入された行ごとに実行される neworder トリガーを作成します。挿入では、NEW で表される orders テーブルとまったく同じ仮想テーブルがあります。 NEW.order_num を @a に選択します。 仮想テーブルに挿入したデータの数を見つけて、その数を変数に保存します。 検出: 注文に INTO を挿入します(注文日、顧客 ID) VALUES(NOW()、10001); @ee を num として選択します。 データを挿入し、挿入されたデータの数を出力する 消去: TRIGGER neworder を削除します。 トリガーを削除します。 例2: COURSE テーブルにトリガーを作成し、挿入時に同じコース名のレコードがあるかどうかを確認します。ある場合、アクションは実行されません。 トリガー trg_course_in を作成する 挿入前コース 各行ごとに 始める msg VARCHAR(100)を宣言します。 存在する場合(cname=NEW.cnameのコースから*を選択) SET msg = '同じ名前のコースには参加できません'; シグナルSQLSTATE 'HY000' SET message_text = msg; 終了の場合; 終わり 例 3: 学生テーブルに情報を挿入するときに、ssex の値が男性または女性である必要があることを確認します。 各行ごとに学生の INSERT 後にトリガー trg_ssex を作成します。 始める msg VARCHAR(100)を宣言します。 IF(NEW.ssex が('男','女')に含まれない場合) THEN SET msg = '性別は男性または女性でなければなりません'; シグナルSQLSTATE 'HY000' SET message_text = msg; 終了の場合 終わり UPDATEトリガー:
例1: 州の略語が大文字になっていることを確認する ベンダーの UPDATE 前に UPDATE トリガーを作成する 各行にnew.vend_state =UPPER(new.vend_state);を設定します。 ベンダーを更新し、vend_state='hw' を設定します。ただし、vend_id='1001' です。 DROP TRIGGER UPDATEevendor; 注: upper: はテキストを大文字に変換します。 例 2: 学生テーブルの学生 ID sno を変更することはできません。この列を変更すると、エラー メッセージが表示され、操作はキャンセルされます。 更新前にトリガー trg_student_updateSno を作成 各行ごとに 始める msg VARCHAR(100)を宣言します。 NEW.sno <> OLD.sno の場合 SET msg = 'sno の変更は許可されていません'; シグナルSQLSTATE 'HY000' SET message_text = msg; 終了の場合; 終わり DELETEトリガー:DELETE トリガーは、削除ステートメントの実行前または実行後に実行されます。
例: アーカイブテーブルに削除する行を保存するには、old を使用します。 まず、注文に似たテーブルを作成します。 テーブル archive_orders を orders のように作成します。 -- 削除トリガーを作成します。CREATE TRIGGER deleteorder BEFORE DELETE on orders 各行の開始 archive_orders(order_num,order_date,cust_id) に VALUES(old.order_num,old.order_date,old.cust_id) を挿入します。 終わり 説明する: 注文テーブルの行の情報を削除する場合は、削除した情報を archive_orders に保存します。 元のテーブルから行を削除します。 order_num='20014' である orders から削除します。 効果をご覧ください: archive_orders から * を選択します。 仕上げる:注意: トリガーエラー「トリガーから結果セットを返すことは許可されていません」が発生した場合
詳しい説明: https://www.programmersought.com/article/3237975256/ ユーザー変数を作成する: https://www.jb51.net/article/201843.htm これで、MySQL トリガーの使用シナリオと使用方法についての記事は終了です。MySQL トリガーの使用に関する詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです
>>: Dockerはコンテナ外のコンテナ内でコマンドを実行します
JSX を使用してコンポーネント システムを構築する前に、例を使用してコンポーネントの実装原理とロ...
この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...
目次序文1. JDBCタイムアウト設定2. 接続プールのタイムアウト設定3. MyBatisクエリの...
目次1. 概要2. gdbデバッグ2.1. ブレークポイントを設定する2.1.1. ブレークポイント...
1. CentOS 7 仮想マシンを開きます。 2. 仮想マシンにログインし、リストにないユーザー名...
おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...
あいまいクエリにOracleデータベースを使用する場合、コンソール エラーは次の図に表示されます。理...
HTML では、Web ページで使用されるエンコーディングを指定する必要があります。一般的な指定方法...
Linux は現在最も広く使用されているサーバー オペレーティング システムです。Unix をベー...
DockerイメージからDockerfileを取得する docker 履歴 --format {{....
モバイル デバイス向けに開発する場合、Retina 画面上で要素の境界線が太くなるという問題に遭遇す...
Remote-SSHをインストールして設定するまず VSCode を開き、拡張機能を見つけて、Rem...
この記事では、CentOS 7 環境で MySQL 5.6 の複数のインスタンスを作成する方法につい...
実装のアイデア: CSSでtext-shadowを使用してテキストの光る効果を実現します効果画像: ...
実際のプロジェクトでは、上下のスクロール バーと左右のスクロール バーは DIV 内にないため、右の...