`
hideto
  • 浏览: 2682818 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL的Stored Function和Trigger

阅读更多
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;
分享到:
评论

相关推荐

    数据库mySQL

    9. 存储过程(Stored Procedure)和函数(Function):预编译的SQL语句集合,可以封装复杂的业务逻辑。 10. 触发器(Trigger):自动执行的程序,基于特定的数据库事件(如INSERT、UPDATE或DELETE)。 MySQL支持SQL...

    MySql5.1中文文档

    MySQL 5.1还引入了触发器(TRIGGER)、存储过程(STORED PROCEDURE)和函数(FUNCTION),这些高级特性允许编写复杂的业务逻辑,提高代码复用性和安全性。此外,文档还会涉及视图(VIEW)的创建与使用,它能简化复杂...

    MySQL 1303错误的解决方法(navicat)

    1303-Can ‘t create a PROCEDURE from within another stored routine. 这个错误信息,比较难以理解,于是仔细检查存储过程内容,也没什么问题呀,代码如下: 代码如下: CREATE PROCEDURE addData() begin declare ...

    mysql 中文及英文参考手册

    6. **存储过程(Stored Procedure)与函数(Function)** - 存储过程是一组预先编译好的SQL语句,可多次调用,提高代码复用。 - 函数是返回单个值的存储过程,常用于计算或数据转换。 7. **触发器(Trigger)** ...

    MySQL中文参考手册

    7. **存储过程与函数**:介绍如何编写和调用存储过程(Stored Procedure)和自定义函数(Function),实现更复杂的逻辑和封装重复的操作。 8. **权限管理**:涵盖用户账户的创建、权限的授予和回收,以及全局和局部...

    sql,mysql参考手册

    MySQL中的特定功能包括视图(View)、触发器(Trigger)、存储过程(Stored Procedure)和函数(Function),它们提供了更高级的数据操作和管理能力。视图可以简化复杂的查询并提供安全性;触发器可以在数据更改前或...

    MYSQL开发学习笔记

    ### MySQL开发学习笔记...最后,针对数据库性能优化和部署管理提供了实用指南,帮助读者更好地理解和掌握MySQL的使用技巧。通过学习这些知识点,初学者可以建立起对MySQL的全面认识,并为进一步的学习打下坚实的基础。

    MySQL学习笔记.zip

    此外,MySQL还提供了视图(View)、存储过程(Stored Procedure)、触发器(Trigger)、函数(Function)等高级特性,它们可以简化复杂的查询,实现业务逻辑的封装。 安全性和权限管理也是学习的重点,如用户账户的...

    mysql_MYSQL_

    10. **存储过程(Stored Procedure)和函数(Function)**: - 存储过程是一组预编译的SQL语句,可以在需要时调用,提高性能和代码复用。 - 函数类似于存储过程,但返回一个值。 11. **触发器(Trigger)**: - ...

    MySQL 用户手册

    除了基本的SQL操作,手册还会涵盖一些高级特性,如视图(View)、存储过程(Stored Procedure)、触发器(Trigger)和函数(Function)。这些特性使得数据库的逻辑可以更复杂,更易于维护和复用。 六、性能优化 ...

    MySql 帮助文档

    MySQL还提供了视图(View)、存储过程(Stored Procedure)、触发器(Trigger)和函数(Function)等高级特性,以增强数据库的灵活性和性能。视图可以简化复杂的查询并提供安全性;存储过程是预编译的SQL语句集合,...

    第 15 章 MySQL 数据库

    - 存储过程(STORED PROCEDURE)和函数(FUNCTION)封装常用操作,提高代码复用。 通过深入学习和实践这些知识点,开发者可以熟练掌握 MySQL 数据库的管理和应用,提升系统性能和数据安全性。在实际项目中,结合...

    MySQL 5.1中文参考手册

    MySQL 5.1中文参考手册是一本详尽的指南,旨在帮助用户理解和操作MySQL数据库管理系统。MySQL是一款广泛使用的开源关系型数据库系统,以其高效、稳定和易于管理的特点,在Web开发和企业级应用中占据重要地位。5.1...

    关于mysql数据库的学习.zip

    5. 存储过程(Stored Procedure)和函数(Function):预编译的SQL语句集合,可封装复杂的业务逻辑,提高效率和安全性。 6. 触发器(Trigger):自动执行的数据库操作,常用于实现数据的完整性约束。 7. 分区...

    关于MySQL的基础篇章

    - 存储过程(Stored Procedure)和函数(Function)允许预编译的SQL代码块,提高性能和代码复用。 - 触发器(Trigger)在特定事件发生时自动执行SQL语句。 以上是MySQL基础学习的主要内容,通过这些知识,开发者...

    MYSQL中文手册完全版

    2. 存储过程(Stored Procedure)和函数(Function):预编译的SQL代码集合,可提高效率并封装复杂逻辑。 3. 触发器(Trigger):自动执行的SQL语句,响应特定的数据库事件。 4. 事务(Transaction):一组操作,...

    MySQL手册+连接jar包

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,用于存储和管理数据。这份“MySQL手册+连接jar包”涵盖了关于MySQL的重要知识点,对于学习和使用MySQL的开发者来说是宝贵的资源。以下是相关知识点的详细介绍: ...

    个人学习MySQL.zip

    8. **存储过程(Stored Procedure)和函数(Function)**: - 编写和调用存储过程,实现复杂业务逻辑。 - 定义自定义函数,提高代码复用性。 9. **触发器(Trigger)**: - 创建和管理触发器,实现数据的自动...

    mysql学习资料整理

    - **创建触发器**: `create trigger 触发器名 before/after insert/update/delete on 表名 for each row begin ... end;` - **触发器事件**: 可以针对INSERT、UPDATE、DELETE等事件创建触发器。 **4. 定时器...

    MySQL数据库基础与实例教程练习题参考答案.doc

    - **易于安装和使用**:MySQL提供了友好的安装向导和管理工具,使得新手也能快速上手。 - **功能强大**:尽管体积较小,MySQL仍然支持大多数高级数据库功能,如事务处理、触发器等。 #### 五、数据库表与电子表格的...

Global site tag (gtag.js) - Google Analytics