测速网 > 电脑知识 >

mysql中的触发器以及存储过程的基础了解

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等实物