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

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

     

  • 相关阅读:
    基于Karma和Jasmine的angular自动化单元测试
    【转】使用SVG中的Symbol元素制作Icon
    【转】整理分析:Before 和 :After及其实例
    【转载】CSS中强大的EM
    【转】提升说服力!UI设计的心理学
    解决IE8不支持数组的indexOf方法
    KISSY Slide 组件应用遇到的一个放大缩小问题
    jQuery.extend 函数详解(转载)
    事件冒泡分析及return false、preventDefault、stopPropagation的区别
    jquery学习(一)-选择器
  • 原文地址:https://www.cnblogs.com/likeju/p/4911570.html
Copyright © 2011-2022 走看看