当前位置: 首页 > wzjs >正文

网站做外国生意正规的计算机培训机构

网站做外国生意,正规的计算机培训机构,菏泽 兼职做网站,淘宝采集wordpressMySQL触发器 trigger,在表的插入insert、更新update、删除delete操作发生时自动执行MySQL语句。 学过Qt的都知道信号槽,一旦发出某个信号,那么就会触发关联的信号槽函数。触发器就类似于这个操作。 创建触发器时需要给出一些信息&#xff…

MySQL触发器

trigger,在表的插入insert、更新update、删除delete操作发生时自动执行MySQL语句。

学过Qt的都知道信号槽,一旦发出某个信号,那么就会触发关联的信号槽函数。触发器就类似于这个操作。

创建触发器时需要给出一些信息:

        触发器名

        在操作前还是操作后触发(before/after)

        被什么操作触发(insert/update/delete)

        被哪个表的操作触发

在MySQL中,触发器采用类似存储过程的语法进行定义,包括触发条件、触发事件、以及触发后执行的SQL语句等:

create trigger myTrigger 
[after|before] [insert|update|delete]
on table_name
begin-- coding
end;

每当表table_name进行操作时,在这之前(之后)执行器会自动执行myTrigger触发器内部的coding。不同的操作也有一定的差异:

        insert:可通过new访问被插入的行,before insert可以更新new中的值(即允许更改被插入的值)。

        delete:可通过old访问被删除的行,old中的值是只读的,因为他即将被删除/已经被删除,现在只是临时保存到old中。

        update:old可以访问更新前的值,new访问更新后的值。

Tips:总结得出insert没法访问old、delete没法访问new、update全能访问。

其它操作:

-- 查看触发器
show triggers;
-- 查看指定表的触发器
show triggers like 'table_name';--查看触发器的创建语句
show create trigger trigger_name;-- 删除触发器
drop trigger [if exists] 触发器名;

练习:需求-更新部门,对应部门的员工涨100元工资

-- 第一步:创建触发器
create trigger up_sal  after update on dept
beginupdate emp set sal=sal+100 where emp.deptno=old.deptno;
end;-- 第二步:更新部门
update dept
set dname="newDept" where deptno=20;-- 第三步:查询员工信息,发现涨工资了
select * from emp;

作业:需求-给部门表添加员工数量字段,员工表添加员工时对应部门的员工数量自动加1

第一步:dept表添加一个字段:员工数量

alter table dept
add enum int default 0;

第二步:部门表的员工数量更新为正确值

update dept
set enum = (select count(*) from emp where emp.deptno=dept.deptno);

第三步:创建触发器,员工表添加员工时,对应部门员工数量加一

create trigger refresh_enum after insert on emp
beginupdate deptset enum=enum+1 where deptno=new.deptno;
end;

第四步:员工表添加员工测试一下。(自己来吧)

总结:通过使用触发器,可以在数据库层面实现一些复杂的业务逻辑,确保数据的一致性和完整性。然而,过多的触发器可能会影响数据库性能,因此在设计时需谨慎考虑。


MySQL事件

MySQL事件是一种在数据库中创建、调度和执行计划任务的机制。通过使用事件,用户可以定期执行特定的SQL语句或存储过程,从而自动化数据库管理和维护任务。

MySQL事件机制的主要组成部分包括以下内容:

1. 事件调度器:事件调度器是MySQL中用于管理和执行事件的组件。用户可以通过事件调度器创建新的事件、修改已有的事件、启用或禁用事件,并查看事件执行的状态和日志信息。

2. 事件对象:事件对象是用户定义的一个具体任务或操作,可以是一个SQL语句、存储过程或函数。用户可以在创建事件时指定要执行的具体操作,并设置事件的调度时间和频率。

3. 事件时间表:事件时间表是与事件相关的调度时间和频率的设置。用户可以在创建事件时指定事件的执行时间表,包括事件的开始时间、结束时间、执行间隔等。

通过使用MySQL事件机制,用户可以实现诸如定时备份数据库、定期清理过期数据、定时生成报表等自动化任务,从而提高数据库管理的效率和可靠性。

创建语句:

create event event_name
on schedule _schedule_
do
event_body;

 event_name:事件名称;_schedule_:执行计划;event_body:自动执行的语句。

需求:创建一个定时事件,每1小时执行一次任务,任务为:删除用户表中注册时间早于30天前的用户数据

create event event_clean_expired_data
on schedule every 1 hour
do
delete from users where register_time < now() - interval 30 day;

特别注意:在MySQL中,事件必须处于激活态才能执行。默认情况下,新建的事件不会自动启动事件调度器,需要通过命令开始事件调度器:

set global event_scheduler = on;

触发器与事件的区别

触发器和事件给我的第一感觉就很像,但他们确实是MySQL的两种不同的机制。经过查阅相关资料,总结出了以下几点:

相似之处:

        事件和触发器都是MySQL中的一种数据对象

        它们都是作为一组SQL语句,可以定时或触发执行

        它们都可以自动完成一些常规的事务操作。

不同之处:

        语法结构不同:这点看上面的创建语句就可以知道了

        触发方式不同:

                事件按照预定的时间表自动触发执行

                触发器在特定的数据表上进行增删改等操作时触发执行

        作用范围不同:

                事件是针对整个数据库的

                触发器通常只作用于单个表(或者服务器全局、schema级)

        功能上的差异:

                事件可以完成归档、日志记录、调度管理、定期的数据清理、备份、统计等任务;

                触发器没有这些高级功能,触发器通常用来进行验证、约束、自动化处理。


感谢大家!

http://www.dtcms.com/wzjs/331886.html

相关文章:

  • 2018春节放假安排 网站建设关键词推广优化
  • 租车网站建设方案泰州seo推广公司
  • 研发管理系统软件官网排名优化方案
  • 网站建设与推广工资网站维护工作内容
  • 亚马逊网站开发使用的什么方式制作网站需要什么技术
  • 河北人工智能建站系统软件国外引流推广软件
  • 网站建设网站制作公司2022国内外重大新闻事件10条
  • 2008系统做网站公司搭建网站
  • cnu摄影网站做网站怎么做
  • 自己做的网站怎么绑域名网络营销怎么做
  • 安徽中擎建设公司网站网址大全名称
  • app定制开发制作费用某一网站seo策划方案
  • 做网站的大创结项快速建站哪个平台好
  • 二级域名做城市分网站百度关键词排名价格
  • 企业网站seo关键词优化排名思路长沙seo男团
  • 招投标网站开发费用自媒体平台收益排行榜
  • 网站优化排名易下拉教程新媒体营销案例分析
  • vue做的手机网站电商培训机构靠谱吗
  • 国内高端大气的网站设计竞价被恶意点击怎么办
  • 信誉好的赣州网站建设搜索推广和信息流推广的区别
  • 做网站有哪些公司好篮网目前排名
  • 模型外包网站短视频营销常用平台有
  • 做网站的商家怎么赚取流量费深圳网站设计专家乐云seo
  • 怎么给网站添加代码湖南优化电商服务有限公司
  • 小程序三级分销系统seo公司网站推广
  • 做花瓶的网站网络营销模式
  • 建设旅行网站推广怎么推
  • 广饶网站开发seo的流程是怎么样的
  • django做的电子商务网站百度官网平台
  • 聊城公司网站设计百度网页网址