Mysql

游標和触發器有什麼區別?

  • January 26, 2018

我試圖理解為什麼要使用 Cursosr 或者它們是如何工作的(我是新手)。

我真的沒有找到使用它的明確目的。

它與觸發器相比如何?

通常,游標用於遍歷SELECT語句返回的結果集。

游標可用於儲存過程、儲存函式和触發器

觸發器是自動執行以響應特定事件(如插入、更新或刪除)的儲存程序。

正如您所看到的,這些是非常不同的概念,並且具有非常不同的目的。

我建議您查看這些連結以了解這兩個概念的基礎知識: 觸發器游標

概述

  • 游標指向結果集中的行(數據)
  • 修改某些內容(INSERT、UPDATE 或 DELETE)時會執行觸發器(指令)。

例子

如果你想要一個真實世界的例子。你要去商店買雜貨。你有六塊錢。每個項目花費兩美元。你需要得到三個項目。清單很有效。如果一切按計劃進行,這些物品應該在您的購物車中,最後您應該有 0 美元。

  1. 橘子
  2. 啤酒
  3. 香蕉

你剛到雜貨店,你看看你的清單

  1. 橙子 <- 游標指向這裡。
  2. 啤酒
  3. 香蕉

你剛拿到橘子,正在處理清單上的那個項目。

  1. 橘子
  2. 啤酒 <- 游標指向這裡。
  3. 香蕉

您從列表中獲得下一個項目,然後前往啤酒過道;但是,妻子打電話給她,她需要李子。你需要

  1. 檢查您的資金。
  2. 檢查你的清單。
  3. 計算如果你有足夠的,那麼要麼
  • 斷言*“不能做”*
  • 將它添加到您的列表中,實際上是*“得到您的幫助”。*

那是一個指令。當你的妻子試圖讓你去摘李子時,它就*觸發了。為了保持您的清單合理,並且因為您重視數據完整性,您告訴您的妻子“不能做”*拒絕她的承諾。你希望你的妻子能夠處理這個斷言而不會爆發。你繼續尋找啤酒。

在現實世界中,無論如何您都會繼續使用啤酒,因為數據庫也不喜歡在工作時被嘮叨或打擾他們的工作人員。

也可以看看

無論使用哪種數據庫,您都應該始終查看 PostgreSQL 文件,了解有關某些東西如何工作的一般想法,因為它們要冗長得多,

SQL 標準將 FETCH 定義為僅用於嵌入式 SQL。

一個重要的注意事項是這些提到了語法,但它們並不是嚴格意義上的語法。對於觸發器,更嚴格的語法文件是CREATE TRIGGER

引用自:https://dba.stackexchange.com/questions/196321