热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql触发器和存储过程小测试

mysql触发器和存储过程小测试1.为了测试触发器和存储过程,首先建立一张简单的表:www.2cto.comCREATETABLE`airuser`(`userId`int(11)NOTNULLAUTO_INCREMENT,`username`varchar(128)...Syn

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;


 

推荐阅读
author-avatar
呆子只爱小呆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有