現在要來做個實作練習 : 建立 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…
觸發器 (Trigger) 是一種自動執行的程式,它會在表格上執行指定的INSERT、UPDATE或DELETE操作時被觸發。觸發器可以用來自動執行一些維護數據一致性的任務,例如驗證數據、記錄變更日誌等。 範例 : 如何在XAMPP中使用MySQL Trigger (範例) MySQL Stored Procedure/Stored Function/Trigger 實作 : 工讀生薪資管理系統 Trigger的語法 在MySQL中創建Trigger的語法如下: CREATE TRIGGER trigger_name {BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name FOR EACH ROW BEGIN -- 觸發器執行的SQL語句 statement1; statement2; statement3; END; trigger_name:觸發器的名稱。 BEFORE | AFTER:指定觸發器是在操作前還是操作後執行。 INSERT | UPDATE | DELETE:指定觸發器的觸發事件類型。 table_name:觸發器所關聯的表名。 FOR EACH ROW:指定觸發器…
什麼是交易(Transaction 很多人稱為事務)功能? 交易(或事務)指的是一連串的指令,並且把它們作為一個單一的工作單位執行。這些操作要嘛全部執行,要嘛全部取消。 交易主要用於保證資料的一致性和完整性,特別是在多用戶環境中,其中多個操作可能同時對相同的資料進行讀寫。 例如一個訂單的完成,包含「將庫存資料表的數量更新」,然後「將訂購的商品資料寫入訂單資料表」。 這兩個動作如果不是都完成,就會產生問題。例如庫存資料表的數量已經-1,但是訂單資料沒有寫入,那麼庫存數量就發生錯誤了;或是訂單資料已經寫入,但是庫存的數量-1發生錯誤,這樣也會發生資料一致性的問題。 例如以下的PHP程式 order.php : <?php include 'conn.inc.php' ; // 引入連線設定檔 // 從 myproducts 表抓取產品 $query = "SELECT pid, pname FROM myproducts" ; $result = $conn ->query( $query ); // 檢查訂購按鈕是否被點擊 if ( $_SERVER [ "REQUEST_METHOD" ] == &qu…
我們在" 如何利用ChatGPT等人工智慧工具,深入學習資料庫技能? "提到可以使用ChatGPT來學習習資料庫技能,更在" 有了人工智慧生成工具之後,MySQL教學型態會產生什麼變化? "說到 : 「設計者只需輸入對資料庫的需求描述,AI即可自動生成對應的SQL語句、關係模型和各種設計文件」。 現在我們將使用ChatGPT 3.5 免費工具來進行協同設計MySQL資料表單,以及撰寫PHP程式,看看整個程序是否可以順利進行。 第一個專案的需求如下 : (1) 建立一個MySQL database,字元集utf8mb4,排序原則utf8mb4_general_ci (2) 以正規化的精神規劃一個「訂單資料管理系統」,可以列出以下訂單資料表 : (3) 並且點選訂單日期,可以修改訂單日期。 (4) 並且列出訂單資料表或是修改訂單日期時,都必須先登入。 我們就在ChatGPT 3.5 開始輸入指令如下 : 建立一個MySQL database,字元集utf8mb4,排序原則utf8mb4_general_ci 請給我MySQL指令。 從ChatGPT得到了建立資料庫的指令 : CREATE DATABASE your_database_nam…