mysql_触发器_存储过程_视图


/*
    触发器
*/

create trigger update_log_after  //触发器名:update_log_after
after 	 //修改student表之后触发
update on student
for each row 
insert into t_opt(opt,date) values(concat(new.id,'被修改'),now()) //修改之后写入t_opt表,

create trigger insert_log_before  //触发器名:insert_log_before
before 	 //插入student表之前触发
insert on student
for each row 
insert into t_opt(opt,date) values('插入了一条数据',now())  //插入之前写入t_opt表,

create trigger delete_log_after  //触发器名:delete_log_after
after 	 //删除student表之后触发
delete on student
for each row   //定义触发器每隔一行执行一次动作,而不是对整个表执行一次
insert into t_opt(opt,date) values(concat(OLD.id,OLD.name,'删除'),now())  
//删除之后写入t_opt表,
//OLD:用于delete; new 用于insert语句; new和OLD用于update语句


触发条件:delete from student where name='zhang'


/*
    存储过程
*/

create procedure mypro1() //存储过程名:mypro1
    BEGIN
        select name from student where id=6;
    end;

调用: call mypro1()


create procedure mypro2(i int) //存储过程名:mypro2
    BEGIN
        select name from student where id=i; //传参
    end;

调用: call mypro2(6)



create procedure mypro3(proId int) //存储过程名:mypro3
    BEGIN
	select p.name,p.id,GROUP_CONCAT(s.name) as names from student s
	    LEFT JOIN professional p on p.id=s.pro
		where p.id=proId  //传参
		    GROUP BY pro;  
    end;

调用: call mypro3(6)

/*
    视图
*/

create view v_pro_names 
    as select p.id,p.name,GROUP_CONCAT(s.name) as names from student s
	left join professional p
	    on p.id=s.pro
		group by pro;
		

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值