以下的文章主要講述的是實現MySQL觸發器的實際操作步驟、以及存儲過程、自定義函數與視圖的簡單示例介紹,如果你對MySQL觸發器的實際操作步驟以及存儲過程的實際操作感興趣的話,你就可以浏覽以下的文章了,示例實現如下效果:
test數據庫有userinfo用戶信息表 和userinfolog用戶信息日志表
1.建立一個userinfo表新增記錄時的觸發器 將新增日志加入到userinfolog
2.建立一個向userinfo表新增記錄的存儲過程
3.根據userinfo表的出生日期字段 我們將建立一個簡單算得年齡的自定義函數
4.創建一個userinfo的視圖 調用年齡函數
准備相關表
- mysql> use test;
- mysql> create table userinfo(userid int,username varchar(10),userbirthday date);
- mysql> create table userinfolog(logtime datetime,loginfo varchar(100));
- mysql> describe userinfo;
1.MySQL觸發器的實現:
- mysql> delimiter |
- mysql> create trigger beforeinsertuserinfo
- -> before insert on userinfo
- -> for each row begin
- -> insert into userinfolog values(now(),CONCAT(new.userid,new.username));
- -> end;
- -> |
- mysql> delimiter ;
- mysql> show triggers;
2.存儲過程
- mysql> delimiter //
- mysql> create procedure spinsertuserinfo(
- -> puserid int,pusername varchar(10)
- -> ,puserbirthday date
- -> )
- -> begin
- -> insert into userinfo values(puserid,pusername,puserbirthday);
- -> end;
- -> //
- mysql> show procedure status like 'spinsertuserinfo';
- mysql> call spinsertuserinfo(1,'zhangsan',current_date);
- mysql> select * from userinfo;
3.自定義函數
- mysql> update userinfo
- -> set userbirthday='2000.01.01'
- -> where userid='1';
- mysql> drop function if exists fngetage;
- mysql> delimiter //
- mysql> create function fngetage(pbirthday date)
- -> returns integer
- -> begin
- -> return year(now()) - year(pbirthday);
- -> end
- -> //
4.視圖
- mysql> create view viewuserinfo
- -> as select * ,fngetage(userbirthday) as userage from userinfo;
- mysql> select * from viewuserinfo;
清除日志記錄
- mysql> truncate table userinfolog;
- mysql> delete from userinfolog;
以上的相關內容就是對MySQL觸發器的介紹,望你能有所收獲。