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

實現MySQL觸發器的實際操作步驟

編輯:MySQL綜合教程

以下的文章主要講述的是實現MySQL觸發器的實際操作步驟、以及存儲過程、自定義函數與視圖的簡單示例介紹,如果你對MySQL觸發器的實際操作步驟以及存儲過程的實際操作感興趣的話,你就可以浏覽以下的文章了,示例實現如下效果:

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

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

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

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

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

准備相關表

  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