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

MySQL 5.0 新特性速覽:存儲過程、觸發器、視圖與信息架構

     編輯:MySQL 資料庫相關知識

版本里程碑

MySQL 5.0 引入四大企業級特性,標誌著從「輕量級資料庫」向「通用關係型資料庫」邁進:

  1. Stored Procedures (存儲過程)
  2. Triggers (觸發器)
  3. Views (視圖)
  4. Information Schema (信息架構視圖)

存儲過程核心語法

CREATE PROCEDURE proc_name ([param_list])
BEGIN
  DECLARE var_name type [DEFAULT value];
  IF condition THEN ... ELSE ... END IF;
  WHILE condition DO ... END WHILE;
  INSERT / UPDATE / DELETE / SELECT ...;
END

關鍵點

  • 參數模式:`IN` (預設)、`OUT`、`INOUT`。
  • 局部變數需 `DECLARE` 在 `BEGIN` 後開頭,作用域限於 `BEGIN...END` 塊,支援巢狀塊變數遮蔽。
  • 流程控制:`IF`、`CASE`、`LOOP`、`WHILE`、`REPEAT`、`ITERATE`/`LEAVE` (類 `continue`/`break`)。
  • 錯誤處理:`DECLARE CONTINUE/HANDLER FOR condition ...` (5.0 初步支援)。

觸發器

CREATE TRIGGER trig_name BEFORE/AFTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW
BEGIN
  -- 可用 NEW.col / OLD.col 存取新舊值
  IF NEW.amount > 1000 THEN SET NEW.status = 'VIP'; END IF;
END
  • 行級觸發 (`FOR EACH ROW`),語句級觸發 5.0 不支援。
  • 常用於審計日誌、衍生欄位維護、跨表同步、資料完整性強制檢查。

視圖

CREATE VIEW view_name AS SELECT col1, col2 FROM tbl WHERE condition;
-- 可更新視圖需滿足:單表、無聚合/分組/去重、無子查詢、所有非衍生欄位來自基表

簡化複雜查詢、實現欄位級安全控制、屏蔽表結構變更影響應用層。

Information Schema

標準化元數據查詢介面:

SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='mydb';
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='users';
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE';

替代 `SHOW TABLES`/`DESCRIBE` 等非標準命令,支援跨資料庫元數據聯結查詢,工具開發首選。

啟動驗證

mysql_fix_privilege_tables  # 升級系統表,生成 mysql.proc 等新表
SELECT VERSION();  -- 確認 5.0.x

遷移建議

  • 將應用層業務邏輯(驗證、計算、多步操作)下沉為存儲過程,減少網路往返、提升安全性、實現多語言復用。
  • 用觸發器替代應用層觸發的審計/同步邏輯,保證資料層面一致性。
  • 視圖作為 API 契約層,隔離表結構重構風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved