天天看點

MySQL 函數存儲過程觸發器定義簡單示例

1.變量提示

NEW 是新值-- OLD 是舊值 

INSERT 隻有NEW ----UPDATE有NEW和OLD ---DELETE隻有OLD 

2.準備測試表(userinfo、userinfolog) 

use test; 

create table userinfo(userid int,username varchar(10),userbirthday date); 

create table userinfolog(logtime datetime,loginfo varchar(100)); 

describe userinfo; 

3.建立同時插入兩張表的觸發器beforeinsertuserinfo

# 定義觸發器

delimiter $$ 

create trigger beforeinsertuserinfo 

before insert on userinfo 

for each row begin 

insert into userinfolog values(now(),CONCAT(new.userid,new.username)); 

end;

$$ 

delimiter ; 

show triggers; 

4.建立插入資料存儲過程spinsertuserinfo

# 存儲過程定義

create procedure spinsertuserinfo(puserid int,pusername varchar(10),puserbirthday date) 

begin 

insert into userinfo values(puserid,pusername,puserbirthday); 

end; 

$$

delimiter ;

show procedure status like 'spinsertuserinfo'; 

call spinsertuserinfo(1,'zhangsan',current_date); 

select * from userinfo; 

5.自定義函數fngetage

update userinfo 

set userbirthday='2000.01.01' 

where userid='1'; 

drop function if exists fngetage;

# 函數定義

create function fngetage(pbirthday date) 

returns integer 

return year(now()) - year(pbirthday); 

6.建立視圖viewuserinfo調用函數fngetage

# 建立視圖

create view viewuserinfo 

as select * ,fngetage(userbirthday) as userage from userinfo; 

select * from viewuserinfo; 

清除日志記錄 

truncate table userinfolog; 

delete from userinfolog; 

本文轉自 pgmia 51CTO部落格,原文連結:http://blog.51cto.com/heyiyi/1251397