mysql编程

来源:互联网 发布:淘宝怎么看访客来源 编辑:程序博客网 时间:2024/05/17 22:33

触发器能监控增删改

语法

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

0 0
原创粉丝点击