简单的小例子,创建两个表,一个存储过程,一个触发器
存储过程是个 while 循环,也很简单,循环网表里插数据
功能:表一只要有insert 动作,触发器生效,执行触发器里的脚本
直接贴出来脚本, 有备注。请自行阅读~~
初学者建议手抄一遍练习。
drop table if exists zhu; -- 判断是否存在,存在就删了(zhu) create table zhu( -- 创建 表一 (zhu) id int(11) not null primary key , name_z char(11) , contents varchar(254) ) engine= Innodb default charset=utf8;
drop table if exists zhu1; -- 判断是否存在,存在就删了(zhu1) create table zhu1( -- 创建 表二 (zhu1) id int(11) not null primary key auto_increment , name_z char(11) , contents varchar(254) ) engine= Innodb default charset=utf8;
DROP procedure if exists zhu; -- 判断是否存在,存在就删了(函数-存储过程) create PROCEDURE zhu() -- 创建 函数-存储过程 BEGIN declare i int; set i = 0; WHILE i <1000 DO INSERT into zhu1 value('' , concat(i,MD5('z')),MD5('Angelo')); set i =i+1; end WHILE ; END;
drop trigger if exists zhu ; -- 判断是否存在,存在就删了(触发器) create trigger zhu -- 创建 触发器 after INSERT on zhu for each row BEGIN call zhu(); END;
-- 测试一下 INSERT into zhu value('' , concat(0,MD5('z')),MD5('Angelo')); select * from zhu ; select * from zhu1;
-------------------------------------整块复制测试-----------------------------------------------------------------
drop table if exists zhu; create table zhu ( id int(11) not null primary key auto_increment, name_z char(11), contents varchar(254) )engine=Innodb default charset=utf8; drop table if exists zhu1; create table zhu1( id int(11) not null primary key auto_increment , name_z char(11) , contents varchar(254) ) engine= Innodb default charset=utf8; DROP procedure if exists zhu; create PROCEDURE zhu() BEGIN declare i int; set i = 0; WHILE i <1000 DO INSERT into zhu1 value('' , concat(i,MD5('z')),MD5('angelo')); set i =i+1; end WHILE ; END; drop trigger if exists zhu ; create trigger zhu after INSERT on zhu for each row BEGIN call zhu(); END; INSERT into zhu value('' , concat(0,MD5('z')),MD5('angelo')); select * from zhu ; select * from zhu1;