web-dev-qa-db-ja.com

カーソルとトリガーの違いは何ですか?

なぜカーソルを使用するのか、または実際にどのように機能するのかを理解しようとしています(私は初心者です)。

それを使用する明確な目的は本当にわかりません。

トリガーと比較してどうですか?

1
Matias Ruiz

通常、カーソルは、SELECTステートメントによって返された結果セットを反復処理するために使用されます。

カーソルは、ストアドプロシージャ、ストアド関数、およびtriggersで使用できます。

トリガーは、挿入、更新、削除などの特定のイベントに応答するために自動的に実行されるストアドプログラムです。

ご覧のとおり、これらは非常に異なる概念であり、非常に異なる目的を持っています。

これらの概念の両方の基本については、これらのリンクを確認することをお勧めします: トリガーカーソル

5
630

概観

  • カーソルが結果セット(データ)の行を指している
  • トリガー(命令)は、何かが変更(INSERT、UPDATE、またはDELETE)されたときに実行されます。

実世界の例が必要な場合。食料品を受け取るために店に行きます。あなたは6ドルを持っています。各アイテムの価格は2ドルです。 3つのアイテムを取得する必要があります。リストはうまくいきます。すべてが予定どおりに進んだ場合、これらのアイテムはカートに入れられ、最後は0ドルになります。

  1. オレンジ
  2. ビール
  3. バナナ

あなたは食料品店に着いたばかりです、あなたはあなたのリストを見ます

  1. オレンジ<-カーソルがここを指している
  2. ビール
  3. バナナ

あなたはオレンジを手に入れ、リストのそのアイテムを処理しました。

  1. オレンジ
  2. ビール<-カーソルがここを指している
  3. バナナ

リストから次のアイテムを取得し、ビール通路に向かいます。しかし、妻は電話をかけ、彼女はプルーンを必要とします。必要がある

  1. あなたの資金を確認してください。
  2. リストを確認してください。
  3. 十分かどうかを計算してから、いずれかを計算します
    • アサート「できない」
    • それをリストに追加して、効果的に "Got ya Covered。"

それは指示です。それはトリガーされたあなたの妻がプルーンを拾わせようとしたとき。リストの健全性を保つため、そしてデータの整合性を重視するため、妻に「できないこと」にコミットを拒否することを伝えます。あなたはあなたの妻が爆破することなく主張を処理できることを望んでいます。あなたはビールを探し続けています。

現実の世界では、データベースもまた、仕事をしているときに労働者を邪魔したり邪魔したりしたくないので、とにかくビールを続けていただろう。

こちらもご覧ください

データベースに関係なく、何かがどのように機能するかについての一般的なアイデアについては、PostgreSQLのドキュメントを参照してください。

  • Cursorsin plpgsql (手続き型)
  • DECLAREFETCH PostgreSQLのインタラクティブトリガー。仕様にないため、常に入手できるとは限らないAPI

    SQL標準では、埋め込みSQLでのみ使用するFETCHを定義しています。

  • トリガー

重要な注意点は、これらは構文について言及しているが、厳密に構文ではないということです。トリガーの場合、より厳密な構文ドキュメントは CREATE TRIGGER

2
Evan Carroll