MySQL的Stored Function和Trigger
Stored Function
存储Function可以作为表达式在内建方法可以调用的地方使用以及SELECT、UPDATE、DELETE、INSERT语句中使用
CREATE FUNCTION function_name(parameter[,...])
RETURNS datatype
[LANGUAGE SQL]
[ [NOT] DETERMINISTIC]
[ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ]
[ SQL SECURITY {DEFINER|INVOKER} ]
[COMMENT comment_string ]
function_statements
三点与存储过程不同的地方:
1,必须要一个RETURNS语句来定义返回值类型
2,不能指定参数的IN、OUT或INOUT修饰符,所有参数隐式的为IN
3,Function体必须包含RETURN语句来终结Function执行并返回指定的结果给调用者
Example:
CREATE FUNCTION cus_status(in_status CHAR(1))
RETURNS VARCHAR(20)
BEGIN
DECLARE long_status VARCHAR(20);
IF in_status = 'O' THEN
SET long_status='Overdue';
ELSEIF in_status = 'U' THEN
SET long_status='Up to date';
ELSEIF in_status = 'N' THEN
SET long_status='New';
END IF;
RETURN(long_status);
END;
好像MySQL当前最新版本(5.1)还不支持嵌套的Stored Function,仅支持嵌套的Stored Procedure
Trigger
Trigger是数据库中的事件触发,当前MySQL的实现是对特定table的DML语句(INSERT/UPDATE/DELETE)调用时触发
CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name
{BEFORE|AFTER}
{INSERT|UPDATE|DELETE}
ON table_name
FOR EACH ROW
trigger_statements
AFTER类型的Trigger不能修改NEW记录的值
如果同时对大量的行做操作,Trigger可能性能开销较大,所以尽量避免在Trigger里放入性能消耗大的SQL语句
Example: Using trigger to implememt audit logging
CREATE TRIGGER account_balance_au
AFTER UPDATE ON account_balance FOR EACH ROW
BEGIN
INSERT into transaction_log
(user_id, description)
VALUES(user(),
CONCAT('Adjusted account ',
NEW.account_id, ' from ', OLD.balance,
' to ', NEW.balance));
END;
分享到:
相关推荐
9. 存储过程(Stored Procedure)和函数(Function):预编译的SQL语句集合,可以封装复杂的业务逻辑。 10. 触发器(Trigger):自动执行的程序,基于特定的数据库事件(如INSERT、UPDATE或DELETE)。 MySQL支持SQL...
MySQL 5.1还引入了触发器(TRIGGER)、存储过程(STORED PROCEDURE)和函数(FUNCTION),这些高级特性允许编写复杂的业务逻辑,提高代码复用性和安全性。此外,文档还会涉及视图(VIEW)的创建与使用,它能简化复杂...
1303-Can ‘t create a PROCEDURE from within another stored routine. 这个错误信息,比较难以理解,于是仔细检查存储过程内容,也没什么问题呀,代码如下: 代码如下: CREATE PROCEDURE addData() begin declare ...
6. **存储过程(Stored Procedure)与函数(Function)** - 存储过程是一组预先编译好的SQL语句,可多次调用,提高代码复用。 - 函数是返回单个值的存储过程,常用于计算或数据转换。 7. **触发器(Trigger)** ...
7. **存储过程与函数**:介绍如何编写和调用存储过程(Stored Procedure)和自定义函数(Function),实现更复杂的逻辑和封装重复的操作。 8. **权限管理**:涵盖用户账户的创建、权限的授予和回收,以及全局和局部...
MySQL中的特定功能包括视图(View)、触发器(Trigger)、存储过程(Stored Procedure)和函数(Function),它们提供了更高级的数据操作和管理能力。视图可以简化复杂的查询并提供安全性;触发器可以在数据更改前或...
### MySQL开发学习笔记...最后,针对数据库性能优化和部署管理提供了实用指南,帮助读者更好地理解和掌握MySQL的使用技巧。通过学习这些知识点,初学者可以建立起对MySQL的全面认识,并为进一步的学习打下坚实的基础。
此外,MySQL还提供了视图(View)、存储过程(Stored Procedure)、触发器(Trigger)、函数(Function)等高级特性,它们可以简化复杂的查询,实现业务逻辑的封装。 安全性和权限管理也是学习的重点,如用户账户的...
10. **存储过程(Stored Procedure)和函数(Function)**: - 存储过程是一组预编译的SQL语句,可以在需要时调用,提高性能和代码复用。 - 函数类似于存储过程,但返回一个值。 11. **触发器(Trigger)**: - ...
除了基本的SQL操作,手册还会涵盖一些高级特性,如视图(View)、存储过程(Stored Procedure)、触发器(Trigger)和函数(Function)。这些特性使得数据库的逻辑可以更复杂,更易于维护和复用。 六、性能优化 ...
MySQL还提供了视图(View)、存储过程(Stored Procedure)、触发器(Trigger)和函数(Function)等高级特性,以增强数据库的灵活性和性能。视图可以简化复杂的查询并提供安全性;存储过程是预编译的SQL语句集合,...
- 存储过程(STORED PROCEDURE)和函数(FUNCTION)封装常用操作,提高代码复用。 通过深入学习和实践这些知识点,开发者可以熟练掌握 MySQL 数据库的管理和应用,提升系统性能和数据安全性。在实际项目中,结合...
MySQL 5.1中文参考手册是一本详尽的指南,旨在帮助用户理解和操作MySQL数据库管理系统。MySQL是一款广泛使用的开源关系型数据库系统,以其高效、稳定和易于管理的特点,在Web开发和企业级应用中占据重要地位。5.1...
5. 存储过程(Stored Procedure)和函数(Function):预编译的SQL语句集合,可封装复杂的业务逻辑,提高效率和安全性。 6. 触发器(Trigger):自动执行的数据库操作,常用于实现数据的完整性约束。 7. 分区...
- 存储过程(Stored Procedure)和函数(Function)允许预编译的SQL代码块,提高性能和代码复用。 - 触发器(Trigger)在特定事件发生时自动执行SQL语句。 以上是MySQL基础学习的主要内容,通过这些知识,开发者...
2. 存储过程(Stored Procedure)和函数(Function):预编译的SQL代码集合,可提高效率并封装复杂逻辑。 3. 触发器(Trigger):自动执行的SQL语句,响应特定的数据库事件。 4. 事务(Transaction):一组操作,...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。这份“MySQL手册+连接jar包”涵盖了关于MySQL的重要知识点,对于学习和使用MySQL的开发者来说是宝贵的资源。以下是相关知识点的详细介绍: ...
8. **存储过程(Stored Procedure)和函数(Function)**: - 编写和调用存储过程,实现复杂业务逻辑。 - 定义自定义函数,提高代码复用性。 9. **触发器(Trigger)**: - 创建和管理触发器,实现数据的自动...
- **创建触发器**: `create trigger 触发器名 before/after insert/update/delete on 表名 for each row begin ... end;` - **触发器事件**: 可以针对INSERT、UPDATE、DELETE等事件创建触发器。 **4. 定时器...
- **易于安装和使用**:MySQL提供了友好的安装向导和管理工具,使得新手也能快速上手。 - **功能强大**:尽管体积较小,MySQL仍然支持大多数高级数据库功能,如事务处理、触发器等。 #### 五、数据库表与电子表格的...