mysql觸發器和儲存過程小測試

2021-12-30 05:41:16 字數 1374 閱讀 2336

mysql觸發器和儲存過程小測試

1. 為了測試觸發器和儲存過程,首先建立一張簡單的表:

www.2cto.com  

create table `airuser` (

`userid` int(11) not null auto_increment,

`username` varchar(128) not null,

primary key (`userid`)

)engine=innodb default charset=utf8

2. 為該錶的插入操作,建立一張記錄表:

create table `airuser_record` (

`id` int(11) not null auto_increment,

`username` varchar(45) default null,

`edittime` timestamp null default null,

`edittype` varchar(45) default null,

primary key (`id`)

) engine=innodb default charset=utf8

3. 編寫乙個插入操作的觸發器:

drop trigger insert_trigger;

delimiter |

create trigger insert_trigger before insert on airuser

for each row begin

insert into airuser_record set username = new.username, edittime=now(), edittype='insert';

end;| 

show triggers;

4. 為批量插入編寫儲存過程:

drop procedure createusers;

delimiter |

create procedure createusers(in count int)

begin

declare i int;

set i=0;

while i

insert into airuser set username=concat('user_',i);

set i=i+1;

end while;

end;| 

show procedure status;

5. 呼叫儲存過程,驗證儲存過程是工作的,並驗證在插入記錄前,觸發器能正確被觸發:

call createusers(10);

6. 最後通過插入記錄表再次驗證:

select * from mars_jpa.airuser_record;

MySQL儲存過程 觸發器 小例子

一 儲存過程 語法 create procedure in out inout 引數名 資料類形.begin end 引數 in 輸入引數 表示該引數的值必須在呼叫儲存過程的時候指定,在儲存過程中修改該引數的值不能被返回,為預設值。out 輸出引數 該值可在儲存過程內部被改變,並可返回。inout ...

mysql觸發器和儲存過程

mysql觸發器感覺比較使用,比如新增a表就要同時新增b表,或者刪除a表的同時也要刪除b表 觸發器還設計到old和new的使用 delimiter create trigger mytrigger2 after insert on t user for each row begin insert i...

MYSQL 儲存過程,游標和觸發器

1.儲存過程 procedure mysql 儲存過程是從 mysql 5.0 開始增加的新功能。儲存過程的優點有一籮筐。不過最主要的還是執行效率和sql 封裝。特別是 sql 封裝功能,如果沒有儲存過程,在外部程式訪問資料庫時 例如 php 要組織很多 sql 語句。特別是業務邏輯複雜的時候,一大...