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

推薦する

MacにHomebrewをインストールする際の注意点

最近、Xiao Ming は新しい Mac を購入し、独自のブログ Web サイトを構築したいと考え...

CSS3のtransform属性で実装される4つの機能

CSS3 では、transform 関数を使用して、テキストや画像の回転、拡大縮小、傾斜、移動という...

Docker で Tomcat を使用して Web アプリケーションを迅速にデプロイする方法の例

Docker の基本的な操作を学習した後、コンテナにいくつかの基本的なアプリケーションをデプロイして...

nginxのデフォルトポートを変更する方法の詳細な説明

まず設定ファイルがどこにあるか調べる nginx.confはどこにありますかこれらのディレクトリを調...

MySql Group Byは複数のフィールドのグループ化を実装します

日常の開発タスクでは、データ テーブル内のグループ化フィールドに基づいて統計データを取得するために、...

初心者向けのHTMLタグネストルールの詳細なまとめ

最近、HTML を再度学習しており、これは HTML に対する新たな理解と言えます。これを過小評価し...

ウェブページ作成によく使われる英語フォント

アリアルArial は、多くの Microsoft アプリケーションとともに配布されるサンセリフ T...

MySQL テーブルを返すとインデックスが無効になるケースの説明

導入MySQL InnoDB エンジンがレコードをクエリし、インデックス カバレッジを使用できない場...

MySQL 8.0.22 のダウンロード、インストール、設定方法のグラフィックチュートリアル

参考までにMySQL 8.0.22をダウンロードしてインストールしてください。具体的な内容は次のとお...

jsはテーブルの追加と削除の操作を動的に実装します

この記事の例では、jsでテーブルを動的に追加および削除するための具体的なコードを参考までに共有してい...

docker 環境でのデータベース バックアップ (postgresql、mysql) のサンプル コード

目次posgresql バックアップ/リストアMySQL バックアップ/復元posgresql バッ...

HTML 基本要約推奨事項 (タイトル)

HTML: タイトル見出しは <h1> - <h6> などのタグによって定...

Linux リダイレクトの使用方法の詳細な説明

誰でも時々データをコピーして貼り付ける必要があると思います。コピーして貼り付けるためにファイルを開く...

mysql5.7 以降で my.ini を設定するための詳細な手順

Windows 64 ビット版 MySQL 5.7 以降の解凍パッケージにデータディレクトリ、my-...