使用方式如下
使用的测试表如图
teacher表
student表
示例
-- 存储过程
delimiter //
create procedure db1.s()
begin
select * from db1.student;
end //
delimiter ;
use db1;
-- 调用存储过程
call db1.s();
-- 触发器
delimiter //
-- before insert on 在xx表插入之前 for each row 插入的每一条都执行
create trigger c1 before insert on student for each row
begin
set new.stid=2,new.addr='天津';
end //
delimiter ;
insert into student set name='救死扶伤';
drop trigger c1;
delimiter //
-- 触发器对同一个表进行插入修改删除时 不能在这个表进行其他操作 类似于锁机制
create trigger c2 after delete on student for each row
begin
insert into teacher set name=old.name;
end //
delimiter ;
drop trigger c2;
delete from student where sid=2;
select * from teacher;
-- 事件
delimiter //
-- 设定事件创建十分钟后执行删除操作 执行过一次后会销毁
create event e1 on schedule at current_timestamp + interval 10 minute
do
begin
delete from teacher where name= '逆天而行';
select * from student;
end //
delimiter ;
alter event e1 rename to e3;
-- 此事件十分钟后执行 以后每三分钟执行一次 此事件会一直存在
delimiter //
create event e2 on schedule every 3 minute starts current_timestamp + interval 10 minute
do
begin
insert into teacher set name='陈卸甲啊';
insert into teacher set name='是卸甲啊';
end //
delimiter ;
-- 删除事件
drop event e2;
-- 禁用事件 但不销毁
alter event e2 disable;
-- 开启事件
alter event e2 enable;
-- 视图 修改视图中的数据会影响到基表 修改基表也会影响到视图
delimiter //
create view v1 as select * from teacher;
delimiter ;
update v1 set name='陈卸甲' where tid=1;
select v1.tid, name from v1;