mysql建立觸發器 儲存過程 函式等例項

2021-08-25 12:57:02 字數 1743 閱讀 4500

############# 本blog可以直接在mysql客戶端中執行 #############

# 0. 表準備

drop database abc;

create database abc;

use abc;

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

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

# 1. 觸發器

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;

# 2. 儲存過程

drop procedure if exists 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', '1972-01-09');

call spinsertuserinfo(2, 'lisi', '1982-07-26');

call spinsertuserinfo(3, 'wanger', current_date);

# 3. 自定義函式

drop function if exists fngetage;

delimiter //

create function fngetage(pbirthday date)

returns integer

begin

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

end//

delimiter ;

# 4. 檢視

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

select * from viewuserinfo;

本示例實現如下效果:

0.test資料庫有userinfo使用者資訊表和userinfolog使用者資訊日誌表

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

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

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

4.建立乙個userinfo的檢視呼叫年齡函式

my sql 觸發器 mysql建立觸發器

首先,我們來了解一下什麼是觸發器,觸發器,就是在對一張表資料進行增 insert 刪 delete 改 update 的時候,為了保持資料的一致性,對別的表也要進行相應的資料修改。我們都知道mysql最後事務提交後,資料是會儲存到磁碟上的,那麼每次在insert,delete,update時候舊資料...

MySQL 事件 觸發器 儲存過程

事件 檢視事件狀態 show variables like event scheduler 開啟事件 set global event scheduler on 觸發器語法 建立觸發器 delimiter 定義開始和結束的標誌 create trigger triggername after bef...

mysql觸發器與儲存過程

一 異同點 觸發器和儲存過程都是一組mysql語句集,都可以實現一些比較複雜的業務邏輯,可以直接在資料庫中,編寫業務邏輯,對不同的表進行操作,執行效率較高,不同的是儲存過程需要主動呼叫,如下 給引數賦值set b 5 呼叫儲存過程,並傳入引數 call proc adder 2,b,s 獲取結果 s...