创建t1表
create table t1(id varchar(10),name varchar(10),age varchar(20));
创建t2表
create table t2(id varchar(10),name varchar(10),age varchar(20));
//当对t1表进行添加时自动对t2表也添加
先设置结束符,因为在创建触发器的过程中要使用分号所以需要修改结束符
\d$$
create trigger tm before insert on t1 for each row
begin
insert into t2(id,name,age) values(new.id,new.name,new.age);
end
$$
//当对t1表进行删除时自动对t2表也删除
create trigger td before delete on t1 for each row
begin
delete from t2 where id=old.id;
end
$$
//当对t1表进行修改时自动对t2表也修改
create trigger tu before update on t1 for each row
update t2 set id=new.id where id=old.id;
end $$
创建存储过程
先创建一张表
CREATE TABLE `ttt` (
`name` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
创建存储过程
先设置结束符,因为在创建触发器的过程中要使用分号所以需要修改结束符
\d$$
create PROCEDURE `p3`()
begin
set @i=0;
while @i < 1000 do
insert into ttt(name) values(concat("username",@i));
set @i=@i+1;
end while;
end $$
//调用存储过程
call p3$$
//预处理语句
//我已经有了表testdata,表结构如下
CREATE TABLE `testdata` (
`deptno` mediumint(8) unsigned NOT NULL DEFAULT '0',
`dname` varchar(20) NOT NULL DEFAULT '',
`loc` varchar(13) NOT NULL DEFAULT '',
`num` int(11) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8
//表数据如下
+--------+-------+-----+------+
| deptno | dname | loc | num |
+--------+-------+-----+------+
| 1 | life | l1 | NULL |
| 2 | life | 22 | NULL |
| 3 | study | 33 | NULL |
| 4 | work | 44 | NULL |
| 5 | study | 55 | NULL |
| 6 | life | 66 | NULL |
| 7 | life | 1 | NULL |
| 8 | life | 0 | NULL |
| 9 | life | 2 | NULL |
| 19 | life | 7 | NULL |
| 20 | life | 66 | 1 |
| 21 | life | 66 | 200 |
| 22 | life | 66 | 200 |
+--------+-------+-----+------+
//创建预处理语句
先设置结束符,因为在创建触发器的过程中要使用分号所以需要修改结束符
\d$$
prepare tp from "select * from testdata where deptno>? "$$
//设置变量的值
set @i=9$$
//调用预处理语句
execute tp using @i$$
执行结果如下
+--------+-------+-----+------+
| deptno | dname | loc | num |
+--------+-------+-----+------+
| 19 | life | 7 | NULL |
| 20 | life | 66 | 1 |
| 21 | life | 66 | 200 |
| 22 | life | 66 | 200 |
+--------+-------+-----+------+
mysql触发器,存储过程,预处理语句
最新推荐文章于 2025-05-22 23:12:20 发布