iT邦幫忙

DAY 20
3

只談MySQL系列 第 20

只談MySQL (第20天) Stored Procedure和Function的先天限制...

終於來到第20天了, 已經過了三分之二, 日子過的真快, 想當初第一天始時還不知道能不能順利渡過, 現在看起來, 還真的可以吶....
閒話少說, 今天我們要討論在Stored Procedure、Function和Trigger中的限制, 這些限制是設計MySQL時就決定了, 所以是先天的, 無法避免的限制...
記得, 在MySQLL , Stored Routine就是指Stored Procedure和Function
以下就是Stored Routine及Trigger的限制:

  1. SELECT指令一定要用INTO子句將查詢結果回傳到變中, 否則出錯誤. 另外, SHOW, EXPLAIN和CHECK TABLE等指令不能使用.
  2. 不能用FLUSH指令
  3. 不能遞迴使用Stored Function
  4. 不能修改已經被叫用的資料表, 例如已經宣告Cursor的相關資料表, UPDATE或SELECT指令引用的相關資料表, 只要是在Stored Routine或Trigger有引用的資料表, 都不能在STored Routine或Trigger中有修訂的動作發生
  5. 在Stored Routine中建立的Temporary Table, 不能重覆宣告, 不則會出現錯誤訊息: "Can't reopen table: 'tbl_name'"
  6. Stored Function會對引用的資料表做Table Lock的動作, 但Stored Procedures不會.
    以上大致說明了MySQL的Stored Procedure及Function、Trigger的一些限制, 其他的限制, 不太會遇到, 在日後討論中有相關限制時, 再提出來說明.
    明天, 我們將開始討論MySQL的一些系統管理工具.

上一篇
只談MySQL (第19天) Trigger及Event Schedule
下一篇
只談MySQL (第21天) MySQL的圖形化管理介程式
系列文
只談MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言