首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 伺服器端游標限制完整說明

     編輯:MySQL 資料庫相關知識

游標特性限制表

特性支援狀態說明
可更新性唯讀無法用游標 UPDATE/DELETE 當前行
WHERE CURRENT OF不支援標準 SQL 定位更新語法不可用
可保持性不支援COMMIT 後自動關閉
敏感性不敏感不反映後續資料變更
可捲動性不可捲動僅支援順向 FETCH,無 ABSOLUTE/RELATIVE
命名未命名以預處理語句句柄作為游標 ID
每預處理語句游標數1 個需多游標請建立多條預處理語句
不支援游標的語句CHECK TABLE / HANDLER READ / SHOW BINLOG EVENTS 等預處理模式下不支援的語句皆不可用

傳輸優化行為

若客戶端僅需第一行,MySQL 不會傳輸剩餘行,減少網路開銷。

應用層對策

  1. 需更新當前行 → 改用主鍵 WHERE id = ? 直接 UPDATE。
  2. 需雙向捲動 → 應用層自行快取結果集至記憶體/陣列。
  3. 需跨事務保持 → 應用層管理快照或重新查詢。
  4. 多游標並發 → 開啟多條預處理語句,各自管理游標。

版本演進

  • MySQL 5.0+ 引入伺服器端預處理與游標。
  • 8.0 仍維持上述限制,無重大擴充。
  • 標準 SQL:2003 游標功能完整度較高,MySQL 僅實作子集。
  • 理解限制,在應用層補足,避免在資料庫層強求不支援功能導致架構扭曲。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved