MySQLでカーソルトリガーを使用する方法

MySQLでカーソルトリガーを使用する方法

カーソル

選択クエリによって返される行のセットは、結果セットと呼ばれます。結果セット内の行は、入力した SQL ステートメントに基づいて取得されます。カーソルを使用しないと、最初の行、最初の 10 行、または次の行を取得することはできません。

以下はカーソルの一般的な現象と特徴です。

  • カーソルを読み取り専用としてマークする機能。つまり、データの読み取りは可能だが、更新や削除はできない。
  • 実行可能な方向操作を制御する機能 (前方、後方、最初、最後、絶対位置、相対位置など)
  • 一部のアクションを編集可能としてマークし、他のアクションを編集不可としてマークする機能
  • スコープを設定できるため、カーソルを作成した特定のリクエストまたはすべてのリクエストからアクセスできるようになります。
  • カーソル宣言はハンドラ宣言の前、後に置く必要があります。
  • 変数と条件の宣言。
  • カーソルが開かれると、カーソルは最初のレコードを指すのではなく、最初のレコードの先頭を指すことに注意してください。

カーソルを使用する手順は次のとおりです

  • カーソルを宣言します。このプロセスではまだデータの取得を開始していません。
  • カーソルを開いて使用する
  • 行の取得
  • カーソルを閉じて、カーソルを離します
csカーソルを宣言する 
のために 
選択*
お客様から
cust_email が NULL の場合;

すべて問題ないと思っていたのに、エラーが発生しました

ここに画像の説明を挿入

構文に間違いはありません。

cs の前に @ を追加してみてください。実行時にエラー メッセージが引き続き表示されます。

カーソルはストアド プロシージャでのみ使用できると言う人もいます。それは本当ですか?

では、ストアドプロシージャでカーソルを使ってみましょう。

CREATE PROCEDURE プロシージャ1
()
始める
	cur1 カーソルを宣言する 
	のために 
	選択* 
	お客様から 
	cust_id が NULL の場合 tianyoutianyou;
終わり

まだエラー

もう一度変更

区切り文字 //
CREATE PROCEDURE プロシージャ1
()
始める
	cur1 カーソルを宣言する 
	のために 
	選択* 
	お客様から 
	cust_id が NULL の場合;
終わり

今回はカーソルの宣言に成功しました

区切り文字を変更したため、カーソルが正常に作成されたのでしょうか?

もう一度やり直しましょう

プロシージャプロシージャ1() を作成する
cur1 カーソルを宣言する 
のために 
選択* 
お客様から 
cust_id が NULL の場合;

これも間違っています。ストアド プロシージャを使用せずにカーソルを正常に作成できるかどうかを確認してみましょう。

区切り文字 //
cur2 カーソルを宣言する
のために 
選択*
注文から;

あるいはこれ

区切り文字 //
cur2 カーソルを宣言する
のために 
選択*
注文から //

これら2つのタイプにも8行あります

何度も試した結果、唯一成功したのは次の文です。

区切り文字 //
プロシージャプロシージャ1() を作成する
始める 
	cur1 カーソルを宣言する 
	のために 
	選択* 
	お客様から 
	cust_id が NULL の場合;
終わり

次にカーソルを使ってデータを取得します

残念ながら、MySQL には Oracle の %ROWTYPE のようなデータ型はありません。カーソルを使用して、customers テーブル内の特定のタイプのデータを取得してみましょう。

トリガー

トリガーは、データベース内で特定のアクティビティが発生したときに自動的に実行される特定のストアド プロシージャです。一般的に、制約はトリガーよりも速く処理されるため、可能な限り制約を使用する必要があります。

MySQL でカーソル トリガーを使用する方法についての記事はこれで終わりです。MySQL カーソル トリガーに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL カーソル関数と使用法
  • MySQL カーソルの定義と使用法
  • MySQLでカーソルを宣言する方法
  • MySQLカーソルの詳細な紹介

<<:  複数の X 軸を使用して 7 日間の天気予報を実現するための Echarts サンプル コード

>>:  CSS の clip-path プロパティの使用方法の詳細な説明

推薦する

MySQL データベースで機密データの暗号化と復号化を実装する方法

目次1. 準備2. MySQL暗号化関数方式2.1 MySQL 暗号化2.2 MYSQL 復号化3....

MySQLのサブクエリユニオンの効率性についての簡単な説明と

最近の製品テストでは、同時呼び出し数が 10 未満の場合に応答時間が 100 ミリ秒以内に維持できな...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

ウェブフォームデザインのための5つの実用的なヒント

1. フォームテキスト入力のモバイル選択: テキスト入力フィールドにプロンプ​​トが追加されている場...

JavaScript Proxyオブジェクトの詳細な説明

目次1. プロキシとは何ですか? 2. 使い方は? 1. プロキシを使用する簡単な例2. 対象オブジ...

Docker を使用して Jenkins をインストールするためのサンプル コード

Dockerコンテナのインストール時に遭遇しやすい2つの問題1.ポートはすでに割り当てられています(...

MySQL統計の概要

MySQL は、SQL 解析とクエリ最適化のプロセスを通じて SQL を実行します。パーサーは SQ...

要素内の TimePicker は時間の一部を無効にします (分単位で無効)

プロジェクトの要件は、日付と時刻を選択し、現在の時刻以降の時刻のみを選択し、最小レベルを分単位で無効...

JSタイマーを使用して要素を移動する

JS タイマーを使用して、要素に移動する効果のあるメソッドを作成します。実装のアイデアは、まず要素の...

Linux のスケジュールされたタスクの crontab のインストールと使用の詳細な説明

crontabをインストールするyum install crontabs CentOS 7が付属して...

サラウンドリフレクションロード効果を実現するHTML+CSS

この記事では、主に html + css を使用してサラウンド リフレクション ローディング エフェ...

Ubuntu 16.4 で完全に分散された Hadoop 環境を構築するための実践的なチュートリアル

序文この記事は主にubantu 16.4 Hadoop完全分散構築に関する関連コンテンツを紹介し、皆...

MySQL 5.7 の sql_mode のデフォルト値によって生じる落とし穴と解決策

通常のプロジェクト開発中に、MySQL バージョンが 5.6 から 5.7 にアップグレードされた場...

コードを通じてHTMLエスケープ文字を識別する方法について説明します

データ内に次のような特徴を持つ「 ' 」などの文字が含まれることがあります。 &# ...

階段を転がす特殊効果を実現する JavaScript (jQuery 実装)

皆さんもJDを使ったことがあると思います。ホームページには非常によく見られる機能があります。階段の特...