6.41 MySQL函数的五大特性关键字

MySQL 自定义函数 / 存储过程 五大特性关键字
除了你刚学的 DETERMINISTIC,一共就这4 个常用特性,加上它总共五类,必须记熟(教学常考、写函数必用):
一、四大核心特性(和 DETERMINISTIC 并列)
1. DETERMINISTIC
确定性函数
相同入参 → 固定相同结果,不查表、不读时间、不随机。
纯计算、字符串处理用这个。
2. NOT DETERMINISTIC
非确定性函数
相同入参可能返回不同结果。
只要查表、用 NOW ()、RAND ()、UUID () 都必须用这个。
3. NO SQL
不执行任何 SQL 语句
函数里没有 SELECT/INSERT/UPDATE/DELETE,只做变量运算、逻辑判断。
4. READS SQL DATA
只读 SQL 数据
函数里有 SELECT 查询,但不增删改数据(你刚才的 myf3k 就属于这一种)。
5. MODIFIES SQL DATA
修改 SQL 数据
函数里包含 INSERT / UPDATE / DELETE 写表操作。
三、快速分类口诀(方便教学记)
纯计算无查表 → DETERMINISTIC
有时间 / 随机 → NOT DETERMINISTIC
完全不写 SQL → NO SQL
只查不修改 → READS SQL DATA
增删改写表 → MODIFIES SQL DATA
四、补充小知识点
MySQL 5.7/8.0 创建函数必须选其一,否则报 1418 错误;
函数尽量不要用 MODIFIES SQL DATA,规范写业务写在存储过程里。