Mysql
游標和触發器有什麼區別?
我試圖理解為什麼要使用 Cursosr 或者它們是如何工作的(我是新手)。
我真的沒有找到使用它的明確目的。
它與觸發器相比如何?
通常,游標用於遍歷
SELECT
語句返回的結果集。游標可用於儲存過程、儲存函式和触發器。
觸發器是自動執行以響應特定事件(如插入、更新或刪除)的儲存程序。
正如您所看到的,這些是非常不同的概念,並且具有非常不同的目的。
概述
- 游標指向結果集中的行(數據)
- 修改某些內容(INSERT、UPDATE 或 DELETE)時會執行觸發器(指令)。
例子
如果你想要一個真實世界的例子。你要去商店買雜貨。你有六塊錢。每個項目花費兩美元。你需要得到三個項目。清單很有效。如果一切按計劃進行,這些物品應該在您的購物車中,最後您應該有 0 美元。
- 橘子
- 啤酒
- 香蕉
你剛到雜貨店,你看看你的清單
- 橙子 <- 游標指向這裡。
- 啤酒
- 香蕉
你剛拿到橘子,正在處理清單上的那個項目。
- 橘子
- 啤酒 <- 游標指向這裡。
- 香蕉
您從列表中獲得下一個項目,然後前往啤酒過道;但是,妻子打電話給她,她需要李子。你需要
- 檢查您的資金。
- 檢查你的清單。
- 計算如果你有足夠的,那麼要麼
- 斷言*“不能做”*
- 將它添加到您的列表中,實際上是*“得到您的幫助”。*
那是一個指令。當你的妻子試圖讓你去摘李子時,它就*觸發了。為了保持您的清單合理,並且因為您重視數據完整性,您告訴您的妻子“不能做”*拒絕她的承諾。你希望你的妻子能夠處理這個斷言而不會爆發。你繼續尋找啤酒。
在現實世界中,無論如何您都會繼續使用啤酒,因為數據庫也不喜歡在工作時被嘮叨或打擾他們的工作人員。
也可以看看
無論使用哪種數據庫,您都應該始終查看 PostgreSQL 文件,了解有關某些東西如何工作的一般想法,因為它們要冗長得多,
- plpgsql 中的游標(過程)
DECLARE
FETCH
PostgreSQL 的互動式觸發器。一個你並不總是得到的 API,因為它不在規範中SQL 標準將 FETCH 定義為僅用於嵌入式 SQL。
一個重要的注意事項是這些提到了語法,但它們並不是嚴格意義上的語法。對於觸發器,更嚴格的語法文件是
CREATE TRIGGER