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 プロパティの使用方法の詳細な説明

推薦する

Nest.js パラメータ検証とカスタム戻りデータ形式の詳細な説明

0x0 パラメータ検証Nest.jsでは、パラメータ検証業務のほとんどをパイプライン方式で実装してい...

1分でVueが右クリックメニューを実装

目次レンダリングインストールコードの実装カスタムスタイル要約する効率的に要件を満たし、車輪の再発明を...

CentOS システムでの JDK のインストールと設定の概要

目次序文OpenJDKの確認とアンインストールダウンロードした圧縮パッケージを使用してJDKをインス...

Vueはカウンターのシンプルな生成を実装します

この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...

MySQLワームレプリケーションの基本知識

ワームは、その名前が示すように、自ら複製し、その数は倍増、つまり指数関数的に増加します。 MySQL...

Debian ベースの Linux システム ソフトウェア インストール コマンドの詳細な説明 (推奨)

Debian の紹介Debian は、広い意味では、フリーなオペレーティング システムの作成に専念...

CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...

JSはプログレスバーのスムーズバージョンの詳細な計画を実装します

進捗バーがスムーズではないフロントエンドを学ぶ学生のほとんどは、オーディオプレーヤーやビデオプレーヤ...

Alibaba Cloud Centos7.X で外部にポートを開く方法

一言で言えば、大手メーカーからクラウド サーバーを購入する場合は、セキュリティ グループに移動して、...

MySQL 8.0.15 winx64 解凍版のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64解凍版のインストールと設定方法を紹介します。具体...

CSS ファイルをインポートする 4 つの方法 (インライン、インライン、外部、インポート) の詳細な説明

CSS インポート方法 - インラインスタイルタグ属性を通じて、CSSのキーと値のペアがタグに直接書...

MySQL トランザクション分離はどのように実現されますか?

目次同時シナリオ書き込む読む読む読み取り-書き込みと書き込み-読み取りMySQL のロック行レベルロ...

CSS グリッドレイアウトで列にアイテムを埋め込む方法

n 個のアイテムがあり、これらのアイテムをグリッド レイアウトの列に並べ替える必要があるとします。列...

MySQL が InnoDB テーブルが独立したテーブルスペースか共有テーブルスペースかを判断する方法の詳細な説明

序文InnoDB はデータをテーブルスペースに保存します。デフォルト設定では、初期サイズが 10 M...

CSS で div 凹角スタイルを実装するサンプル コード

通常の開発では、凸型の丸い角、つまり border-radius 属性を使用するのが一般的です。凹角...