zoukankan      html  css  js  c++  java
  • MySql的存储过程和触发器

    Mysql的存储过程是类似于其它编程语言中的函数的功能,存储过程内部可以使用顺序循环和转移三种基本程序结构,而且整个存储过程可以接受和返回参数。

    创建存储过程(procedure)时,因为其内部有以;结尾的sql语句,所以我们要更改语句结束符,使用delimiter  //来更改结束符为//。然后就可以定义了,eg

    create procedure name()

    begin

    declare a int(10);

    set a = 1;

    while a<10 do

    if a%2 = 1 then

    set a = a+1;

    insert into users values (null,a,’’,’’);

    else

    set a=a+1;

    end if;

    end while;

    end //

    调用时直接使用call name()来就可以,注意要带()。

    显示创建过程用show create procedure name

    显示所有存储过程用show procedure status

    删除存储过程用 drop procedure name

    存储过程内可以使用字符串,时间和数学函数。同时可以在参数列表中定义传入和传出的参数,定义输出参数 out a int,在存储过程内部给这个变量@a赋值,显示时用select @a。

    Mysql的触发器相当于内部处理的一些过程,他不带入和带出任何的参数,其内部使用的参数就是新旧两条记录old和new的字段。用于完成数据表之间的触发操作,来保证数据库的一致性、完整性。

    定义触发器的规程:

    create trigger name after|before delete|update|insert on table_name for each row begin end 当有多个语句的时候就用begin和end,不可以有多个相同时间点的相同类型操作。Eg

    Create trigger name before update on users

    For each row

    Begin

    If new.admin = 1 then

    Set new.admin =1;

    Else

    Set new.admin =0;

    End if;

    End

    调用触发器,当在表上出现制定的操作时,执行相应的触发器。

    删除触发器drop trigger name

    用途举例:同步插入数据至不同类型的表,同步删除关联数据。

     

  • 相关阅读:
    压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate .
    [转](多实例)mysql-mmm集群
    mysql的MMM高可用方案
    压力测试工具
    memcached 的简介、安装、命令
    memcached 最大连接数及其内存大小的设置
    mysql优化
    mysql
    30道Linux面试题
    门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
  • 原文地址:https://www.cnblogs.com/likeju/p/4911570.html
Copyright © 2011-2022 走看看