mysql触发器,存储过程,函数

    xiaoxiao2021-03-25  90

    触发器能监控增删改

    语法

    Create trigger triggerName 

    After/before insert/update/delete  on 表名

    For each row #这句话是固定的

    Begin

    Sql语句;  # 一句或多句,insert/update/delete范围内

    End;

     

    修改结束符

    Delimiter $$;mysql的结束符改成$$;

    栗子

    create trigger t1

    after insert on o

    for each row

    begin

    update test1 set num=num-1 where id=2;

    end;

    行变量

     

    New 指代 新增的那一行 old指代旧的那一行

    触发器改进

    Create trigger t1

    After insert on o

    For each row

    Begin

    Update test1 set num=new-new.much where id=new.id

    End;

    同一个表 只允许出现一个触发器

    Drop trigger t1删除触发器

     

    当我们下单时 应该先判断 商品有多少,然后在下单

    Mysql 变量

    Select num into @num from test1 where id=new.id;

    表示把查出来num 值 付给 @num

    条件语句

     

    If new.much>@num then

    Set New.much=@num//表示设置new .much的值为@num

    End if

    Update sql

    End:

    改进

    Create trigger t1

    Before insert on o

    For each row

    Begin 

    Select num into @num from test where id=new.id

    If new.much >@num then

    Set new.much=num//变量赋值

    End if

    Update sql

    End;

     create trigger t1

     before insert on o

     for each row

     begin

     select num into @num from test1 where id=new.id;

     if new.much > @num then

     set new.much=@num;

     end if;

     update test1 set num=num-new.much where id=new.id;

     end$

     

     

    存储过程

     

    创建

    Create procedure fuc1()

    Begin

    End

    调用用call fuc1();

    查看存储过程

    Show procedure status;;

    删除

    Show procedure fuci;

    带参数的存储过程

    例子

    Create procedure func1(n int)

    Begin

    Select * from goods limit 0,n;

    End

    例子

    Create procedure fuc2(name ,char(1))

    Begin

    Select * from goods where name=name;

    End;

     

    例子

     create procedure func2(n tinyint unsigned)

     begin

     set @cnt=0,@s=1;

     while @s<n do

     set @cnt=@cnt+@s;

     set @s=@s+1;

     end while;

     select @cnt;

     end$

    函数创建

    Create function f1(a int,b int)returns int//注意此处声明返回类型

    Begin

    Return a+b;

    end

    使用

    select f1(5,6)

    转载请注明原文地址: https://ju.6miu.com/read-33511.html

    最新回复(0)