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

MySQL 觸發器,存儲過程實例演示

編輯:MySQL綜合教程

以下的文章主要是介紹MySQL 觸發器,存儲過程以及函數與視圖的實例演示過程,以下就是觸發器,存儲過程以及函數與視圖的具體操作方案的描述,希望在你今後的學習中會對你有所幫助。

MySQL 觸發器,存儲過程以及函數與視圖的實例演示:

0.test數據庫有userinfo用戶信息表 和userinfolog用戶信息日志表

1.建立一個userinfo表新增記錄時的MySQL 觸發器 將新增日志加入到userinfolog

2.建立一個向userinfo表新增記錄的存儲過程

3.根據userinfo表的出生日期字段 我們將建立一個簡單算得年齡的自定義函數

4.創建一個userinfo的視圖 調用年齡函數

0.准備相關表

  1. MySQL> use test;  
  2. MySQL> create table userinfo(userid int,username varchar(10),userbirthday date);  
  3. MySQL> create table userinfolog(logtime datetime,loginfo varchar(100));  
  4. MySQL> describe userinfo; 

1.MySQL 觸發器

  1. MySQL> delimiter |  
  2. MySQL> create trigger beforeinsertuserinfo  
  3. -> before insert on userinfo  
  4. -> for each row begin  
  5. -> insert into userinfolog values(now(),CONCAT(new.userid,new.username));  
  6. -> end;  
  7. -> |  
  8. MySQL> delimiter ;  
  9. MySQL> show triggers; 

2.存儲過程

  1. MySQL> delimiter //  
  2. MySQL> create procedure spinsertuserinfo(  
  3. -> puserid int,pusername varchar(10)  
  4. -> ,puserbirthday date  
  5. -> )  
  6. -> begin  
  7. -> insert into userinfo values(puserid,pusername,puserbirthday);  
  8. -> end;  
  9. -> //  
  10. MySQL> show procedure status like 'spinsertuserinfo';  
  11. MySQL> call spinsertuserinfo(1,'zhangsan',current_date);  
  12. MySQL> select * from userinfo; 

3.自定義函數

  1. MySQL> update userinfo  
  2. -> set userbirthday='2000.01.01' 
  3. -> where userid='1';  
  4. MySQL> drop function if exists fngetage;  
  5. MySQL> delimiter //  
  6. MySQL> create function fngetage(pbirthday date)  
  7. -> returns integer  
  8. -> begin  
  9. -> return year(now()) - year(pbirthday);  
  10. -> end  
  11. -> // 

4.視圖

  1. MySQL> create view viewuserinfo  
  2. -> as select * ,fngetage(userbirthday) as userage from userinfo;  
  3. MySQL> select * from viewuserinfo; 

清除日志記錄

  1. MySQL> truncate table userinfolog;  
  2. MySQL> delete from userinfolog; 

以上的相關內容就是對MySQL 觸發器 存儲過程 函數 視圖的介紹,望你能有所收獲。

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