暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

存储过程、触发器、用户函数

VFrog 2021-05-06
672
  • MySQL存储过程

MySQL存储过程语法

        CREATE PROCEDURE 存储过程名(参数列表)

        BEGIN

            SQL语句代码块

        END

    

存储过程参数:

        IN类型参数,接受外部的传入

        OUT类型参数,将值输出到外部

        INOUT类型参数,即接受传入也可输出

    

创建一个存储过程:

    mysql> delimiter

    mysql> create procedure insert_t1(IN par1 int,IN par2 char(5))

        -> begin

        -> insert into t1 values(par1,par2);

        -> end

        ->

    

调用一个存储过程:

        使用 CALL procedure_name(参数).


  • MySQL用户函数

    

MySQL用户函数语法:

        CREATE FUNCTION function_name(参数列表)

        RETURN type

        BEGIN

            SQL语句代码块

        END

   

创建一个用户函数:

        CREATE FUNCTION fn_count(n int)

        RETURN INT

        BEGIN

        declare m int;

            select count(*) into m from t1 where id < n;

        return m

        END

   

 存储过程与函数的区别:

        存储过程可以实现更加复杂的功能(更改数据库参数、DDL操作、嵌              套、包含事务控制语句、流控制语句等)

        存储过程可以返回结果集,函数只能返回变量

        函数可以用在select语句中

        存储过程只能作为独立体调用


  • MySQL触发器

    

MySQL触发器概念:

        触发器是基于某个指定事件触发执行的程序体。MySQL的触发器事件有:

        insert(before,after)

        update(before,after)

        delete(before,after)

    

触发器语法:

        CREATE TIRGGER trigger_name trigger_time

        trigger event ON table_name FOR EACH ROW

        BEGIN

            SQL语句代码块

        END

    

触发器中的New和old表:

        在触发器中有两个特殊的临时表new与old,其表结构与触发器所在的表一致。new表捕获出入的新数据。old表捕获被删除的旧数据。

    

创建一个触发器:

        CREATE trigger get_insert after insert ON

        t1 for each row

        BEGIN

        insert into t2 values (new id,new name)

        END


  • MySQL事件调度

    MySQL事件调度概念:

    MySQL中的事件调度就类似于Oracle中的作业。可以理解成一个时间触发      器,在特定的时间执行特定的操作,可以执行一次,可以重复执行。

    

事件调度语法:

    CREATE EVENT eventname   

    ON SCHEDULE schedule

    DO SQL 语句代码块

    SCHEDULE:

    

    执行一次:AT timestamp [+ interval]

    重复执行:every interval starts timestamp ends timestamp

    insterval:YEAR|QUARTER|MONTH|DAY|HOUR|MINUTE|WEEK

    

创建一个时间调度:

    CREATE EVENT sec_insert

    ON schedule every 1 second

    DO insert into t2 values(1,'a')

    

启动时间调度:

    使用set global event_scheduler=ON

        


文章转载自VFrog,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论