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

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

     

  • 相关阅读:
    CloudFoundry 中的GoRouter性能測试
    Android-SharedPreferences
    Oracle 闪回表实验
    使用Jfree实现吧条形图,java代码
    ZOJ Monthly, October 2010 ABEFI
    熟知CDN
    看,2015阿里巴巴视觉设计人员面临的问题招收学校
    于win7使用虚拟磁盘隐藏文件
    2015广东工业大学ACM学校巡回赛 I 游戏高手 (如压力dp)
    spring mvc 错误摘要--。位。
  • 原文地址:https://www.cnblogs.com/likeju/p/4911570.html
Copyright © 2011-2022 走看看