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

2021-09-20 23:29:43 字數 1713 閱讀 7644

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

# 儲存過程定義

delimiter $$ 

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;

# 函式定義

delimiter $$ 

create function fngetage(pbirthday date) 

returns integer 

begin 

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

end;

$$delimiter ;

6.建立檢視viewuserinfo呼叫函式fngetage

# 建立檢視

create view viewuserinfo 

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

select * from viewuserinfo; 

清除日誌記錄 

truncate table userinfolog; 

delete from userinfolog; 

MYSQL函式 儲存過程 觸發器

自定義函式是一種與儲存過程十分相似的過程式資料庫物件。它與儲存過程一樣,都是由 sql 語句和過程式語句組成的 片段,並且可以被應用程式和其他 sql 語句呼叫。自定義函式與儲存過程之間存在幾點區別 可以使用 create function 語句建立自定義函式。語法格式如下 create funct...

mysql儲存過程 儲存函式 觸發器 事件

前言 資料庫本身支援儲存過程,不同的資料庫管理系統對儲存過程的支援都不盡相同 從mysql5.0開始,mysql支援儲存過程 儲存函式 觸發器 事件 使用儲存過程的優點 儲存過程執行一次後,其執行的規劃就駐留在高速緩衝儲存器上,以後再次呼叫儲存過程時,只需從高速緩衝儲存器中呼叫以編譯好的二進位制 執...

mysql儲存過程,函式,觸發器例子

1,分割乙個用 間隔的字串的儲存過程 create procedure sp insertjoke lastindex int begin declare i int set i 1 while i0 do begin set part1 mid a,1,p 1 insert myjoke cont...