預存程序
需要MySQL 5 MySQL 5新增了對預存程序的支持,因此,本章內容適用於MySQL 5及以後的版本。
迄今為止,使用的大多數SQL語句都是針對一個或多個表格的單一語句。並非所有操作都這麼簡單,而且常常會有一個完整的操作需要多個語句才能完成。例如,考慮以下的情況。
1.為了處理訂單,需要核對以確保庫存中有相應的物品。
2.如果庫存有物品,這些物品需要預定以便不將它們再賣給別的人,並且要減少可用的物品數量以反映正確的庫存量。
3.庫存中沒有的物品需要訂購,這需要與供應商進行某種互動。
4.關於哪些物品入庫(並且可以立即發貨)和哪些物品退訂,需要通知相應的客戶。
這顯然不是一個完整的例子,它甚至超出了本書中所用樣例表的範圍,但足以幫助表達我們的意思了。執行這個處理需要針對許多表格的多條MySQL語句。此外,需要執行的具體語句及其次序也不是固定的,它們可能會(和將)根據哪些物品在庫存中哪些不在而變化。
那麼,怎麼寫此程式碼?可以單獨編寫每條語句,並根據結果有條件地執行另外的語句。在每次需要這個處理時(以及每個需要它的應用程式中)都必須做這些工作。
可以建立預存程序。預存程序簡單來說,就是為以後的使用而保存的一條或多條MySQL語句的集合。可將其視為批次文件,雖然它們的作用不僅限於批次。
為什麼要使用預存程序
既然我們知道了什麼是預存程序,那為什麼要使用它們呢?有許多理由,以下列出一些主要的理由。
1.透過把處理封裝在容易使用的單元中,簡化複雜的運算。
2.由於不要求反覆建立一系列處理步驟,這保證了資料的完整性。如果所有開發人員和應用程式都使用相同(試驗和測試)預存程序,則所使用的程式碼都是相同的。 這一點的延伸就是防止錯誤。需要執行的步驟越多,出錯的可能性就越大。防止錯誤保證了資料的一致性。
3.簡化變動的管理。如果表名、列名或業務邏輯(或別的內容)有變化,只需要更改預存程序的程式碼。使用它的人員甚至不需要知道這些變化。 這一點的延伸就是安全性。透過儲存過程限制對基礎資料的存取減少了資料訥誤(無意識的或別的原因所導致的資料訥誤)的機會。
4.提高效能。因為使用預存程序比使用單獨的SQL語句快。
5.存在一些只能用在單一請求中的MySQL元素和特性,預存程序可以使用它們來編寫功能更強更靈活的程式碼。 換句話說,使用預存程序有3個主要的好處,即簡單、安全、高效能。顯然,它們都很重要。不過,在將SQL程式碼轉換為預存程序前,也必須知道它的一些缺陷。
6.一般來說,預存程序的編寫比基本SQL語句複雜,編寫預存程序需要更高的技能,更豐富的經驗。
7.你可能沒有建立預存程序的安全存取權。許多資料庫管理員限制預存程序的建立權限,允許使用者使用預存程序,但不允許他們建立預存程序。儘管有這些缺陷,預存程序還是非常有用的,並且應該盡可能地使用。
不能寫預存程序?你仍然可以使用 MySQL將編寫預存程序的安全性和存取與執行預存程序的安全性和存取區分開來。這是好事情。即使你不能(或不想)編寫自己的預存程序,也仍然可以在適當的時候執行別的預存程序。
以上是為什麼使用mysql儲存流程? mysql儲存過程簡介的詳細內容。更多資訊請關注PHP中文網其他相關文章!