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 シリーズ 10 同時実行制御を実装するための MySQL トランザクション分離

目次1.同時アクセス制御2. 取引1. トランザクションは ACID 原則に従います。 2. トラン...

CSS の高さの崩壊問題の解決

1. 崩壊度が高いドキュメント フローでは、親要素の高さはデフォルトで子要素によって拡張されます。つ...

Tomcat パイプライン モードのパイプラインとバルブの詳細な説明

序文比較的複雑な大規模システムでは、複雑なロジックで処理する必要があるオブジェクトまたはデータ フロ...

MySQL 8.0 における非同期レプリケーションの 3 つの方法について簡単に説明します。

この実験では、空のデータベース、オフライン、オンラインの 3 つのモードで、1 つのマスターと 2 ...

mysql-connector-java8.0.27 へのアップグレードに関する注意事項

最近、オンライン セキュリティ スキャンにより、MySQL コネクタに脆弱性が見つかりました。確認し...

ウェブページを開いて数秒後に他のページにリダイレクトする

これを実現するには、次のコードを追加するだけです。方法1: メタを使用する使用方法: <Met...

uniapp パッケージ化されたアプレット レーダー チャート コンポーネントの完全なコード

効果画像:実装コードは以下のとおりですビュー <canvas id="radar-c...

mysqlを使用して、URLから返されたhttp GETリクエストデータを記録します。

ビジネスシナリオの要件と実装ロジックの分析ビジネスでは、HTTP GET を使用してデータを要求する...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...

CentOS7.8 に mysql 8.0.20 をインストールするための詳細なチュートリアル

1. MySQLソフトウェアをインストールするMySQL 公式 Yum リポジトリ、MySQL バー...

Bash の山括弧の深い理解 (初心者向け)

序文Bash には、ls、cd、mv などの重要な組み込みコマンドが多数あるほか、grep、awk、...

tomcat ログ ディレクトリ内のログ ファイルの分析 (概要)

tomcat が起動されるたびに、次のログ ファイルがログ ディレクトリに自動的に生成され、日付順...

Linux に nginx をインストールする方法

Nginx は C 言語で開発されており、Linux で実行することをお勧めします。もちろん、Win...

vuexサードパーティパッケージを使用してデータの永続性を実装する方法

目的: vuex で管理されている状態データを同時にローカルに保存できるようにします。独自のストレー...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...