mysql中的触发器以及存储过程的基础了解
时间:2025-05-27 12:30 文章来源于网友投稿,仅供参考!
mysql中的触发器以及存储过程的基础了解 触发器的基础了解: 01 触发器(trigger):一触即发,就是当进行某种操作之后(或者之前),附加的一种操作就马上执行, mysql中的触发器以及存储过程的基础了解。02 作用:监视某种情况并触发某种操作; 03 注意事项: 04 能监视的事件:增,删,改;能触发的事件:增,删,改; 05 06 监视地点:table 07 监视事件:insert/update/delete 08 触发时间:after/before 09 触发事件:insert/update/delete 10 11 #建立商品表: 12 create table goods(goodsId int, name varchar(10), num int)charset utf8$ 13 14 #建立订单表: 15 create table orders(ordersId int, goodsId int, num int)charset utf8$ 16 17 #插入数据 18 insert into goods values(1,'猪',22),(2,'羊',19),(3,'狗',12),(4,'猫',8)$ 19 20 #买三只羊 21 insert into orders values(1, 2, 3); 22 23 #减少羊的库存 24 update goods set num = num -3 where goodsId = 2; 25 26 #开始学着使用触发器 27 #监视地点:orders 28 #监视操作:insert 29 #触发操作:update 30 #触发时间:after 31 32 #创建第一个触发器 33 create trigger t1 34 after insert on orders 35 for each row 36 begin 37 update goods set num = num -3 where goodsId = 2; 38 end$ 39 40 #删除触发器 41 drop trigger t1$ 42 43 #创建第二个触发器 44 create trigger t2 45 after insert on orders 46 for each row 47 begin 48 update goods set num = num - new.num where goodsId = new.goodsId; 49 end$ 50 51 #创建第三个触发器 52 create trigger t3 53 after delete on orders 54 for each row 55 begin 56 update goods set num = num + old.num where goodsId = old.goodsId; 57 end$ 58 59 #创建第四个触发器 60 create trigger t4 61 after update on orders 62 for each row 63 begin 64 update goods set num = num + old.num - new.num where goodsId = old.goodsId; 65 end$ 存储过程的基础了解: 01 存储过程的含义: 02 存储过程类似于函数,就是把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现,《mysql中的触发器以及存储过程的基础了解》()。在封装的语句体里面,可以使用if/else, case, while等控制结构。这里面就有所谓的sql编程。 03 #测试表的建立及表的操作: 04 create table users( num int, name varchar(20), password varchar(20)); 05 insert into users values(1,'zwh','zwh'); 06 insert into users values(2, 'lhy', 'lhy'); 07 insert into users values(3, 'test', 'test'); 08 insert into users values(4, 'test', 'test'); 09 insert into users values(5, 'test', 'test'); 10 insert into users values(6, 'test', 'test'); 11 insert into users values(7, 'test', 'test'); 12 insert into users values(8, 'test', 'test'); 13 insert into users values(9, 'test', 'test'); 14 insert into users values(10, 'test', 'test'); 15 16 #查看存在的存储过程: 17 show procedure status; 18 19 #删除存在的存储过程: 20 drop procedure ***; 21 22 23 #这里先把定界符先改为$: 24 delimiter $ 25 26 #建立第一个存储过程:体验一下"sql封装" 27 create procedure p1() 28 begin 29 select * from users; 30 end$ 31 32 #调用存储过程 33 call p1()$ 34 35 #建立第二个存储过程:体验一下"参数" 36 create procedure p2( n int ) 37 begin 38 select * from users where num < n; 39 end$ 40 41 #建立第三个存储过程:体验一下"控制结构" 42 create procedure p3( n int, j char(1)) 43 begin 44 if j='h' then 45 select * from users where num>n; 46 else 47 select * from users where num 48 end if; 49 end$ 50 51 #建立第四个存储进程:体验一下'循环结构';这里要注意:存储过程没有返回值 52 #功能:计算从1到n的和 53 create procedure p4(n smallint) 54 begin 55 declare i int; 56 declare s int; 57 set i = 1; 58 set s = 0; 59 while i <= n do 60 set s = s + i; 61 set i = i + 1; 62 end while; 63 select s; 64 end$ 作者 庄伟鸿 |
上一篇:酷狗任意用户密码重置
下一篇:qq会员 超级飞镖手 镖奖得Q币 QQ公仔 ipad iphone等实物