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 語句。特別是業務邏輯複雜的時候,一大...