程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql中的觸發器以及存儲過程的基礎了解

mysql中的觸發器以及存儲過程的基礎了解

編輯:MySQL綜合教程

mysql中的觸發器以及存儲過程的基礎了解   觸發器的基礎了解:   01 觸發器(trigger):一觸即發,就是當進行某種操作之後(或者之前),附加的一種操作就馬上執行。 02 作用:監視某種情況並觸發某種操作; 03 注意事項: 04 能監視的事件:增,刪,改;能觸發的事件:增,刪,改; 05   06 監視地點:table 07 監視事件:insert/update/delete 08 觸發 09 觸發事件:insert/update/delete 10   11 #建立商品表: 12  www.2cto.com   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  www.2cto.com   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  www.2cto.com   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 存儲過程類似於函數,就是把一段代碼封裝起來,當要執行這一段代碼的時候,可以通過調用該存儲過程來實現。在封裝的語句體裡面,可以使用if/else, case, while等控制結構。這裡面就有所謂的sql編程。 03 #測試表的建立及表的操作: 04 create table users( num int, name varchar(20), password varchar(20)); 05  www.2cto.com   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    www.2cto.com   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$  www.2cto.com   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<n; 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  www.2cto.com       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$     作者 莊偉鴻

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved