現在要來做個實作練習 : 建立 Trigger 可以自動減去訂單數量,用來維護庫存量;然後建立 Stored Procedure 用來建立訂單,並建立 Trigger 用來記錄建立訂單的log;建立 Stored Function 用來計算訂單總額,並以php呼叫Stored Procedure 以介面來輸入訂單資料。 要達成以上的需求,我們可以怎麼做呢? (1) 建立 MySQL 資料庫 : CREATE DATABASE OrderSystem CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 然後進入該資料庫 : USE OrderSystem; (2) 建立各資料表格 -- 接著建立商品資料表格Products : CREATE TABLE Products ( ProductID INT AUTO_INCREMENT PRIMARY KEY, ProductName VARCHAR(100) NOT NULL, Price DECIMAL(10, 2) NOT NULL, Stock INT NOT NULL ); -- 建立訂單資料表格Orders : CREATE TABLE Or…
Stored Procedure(預儲程序):把一連串的SQL程序步驟儲存起來,最後透過 『call 預儲程序名稱;』來呼叫。 Stored Function(預儲函數):或稱為使用者定義函數,跟預儲程序很像,不過最後會傳回值。呼叫方式不是 call,而是Select,例如:『select 預儲函數名稱(引數值);』或『select 預儲函數名稱();』。 本文就來練習使用Stored Procedure以及Stored Function。
在MySQL中,把Procedure和Function統稱為Routine,我們會把常用的程序用Stored Procedure或是Stored Function來表示,需要的時候就可以重複呼叫。 Stored Procedure(預儲程序):把一連串的SQL程序步驟儲存起來,最後透過 『call 預儲程序名稱;』來呼叫。 Stored Function(預儲函數):或稱為使用者定義函數,跟預儲程序很像,不過最後會傳回值。呼叫方式不是 call,而是Select,例如:『select 預儲函數名稱(引數值);』或『select 預儲函數名稱();』。 MySQL 正式支援觸發器(trigger)是在 MySQL 5.0.2 的版本之後。觸發器是註冊在資料庫表格上的程式。所以在事件發生(對資料列做新增/修改/刪除)時,資料庫會依照觸發條件(事件前/事件後)幫你執行預先儲存好的程式。 現在來看看一個實際需求的案例 ~ 資料表格式如下 Student(sid, idno, sname, did, syear, sclass) OpenCourse(oid, cid, tid, yearlimit, roomno, tot) Schedule(oid, ti…