mysql之触发器before和after的区别

mysql之触发器before和after的区别,第1张

mysql之 触发器before和after的区别

其实就是指的触发这个触发器的 语句状态,

before是指在此语句执行之前进行相关处理,

而after指的是在此语句执行之后在执行触发器

Before与After区别:before:(insert、update)可以对new进行修改。

after不能对new进行修改。

两者都不能修改old数据。

触发器,顾名思义,就是当执行某个事件的时候触发另一个事件的执行!这个触发的时间分为BEFORE和AFTER两种,分别有before insert,before update,before delete和after insert,after update,after delete这六种情况

以下的文章主要向大家讲述的是MySQL触发器的实际使用详细说明与实际案例分析,同时本文也列举了一些在MySQL触发器的实际式 *** 作中的代码,以下就是文章的详细内容介绍,望大家借鉴。原文地址:http://database.51cto.com/art/201005/200671.htm

FOR EACH ROW 子句通知触发器每隔一行执行一次动作,而不是对整个表,在触发器中我们经常会用到NEW和OLD这两个关键字,在这里我还是先解释下这两个字的意思!其中NEW是指刚刚插入到数据库的数据表中的一个域,也可以理解为对象(object)的意思。比如在一个insert触发器中我用到了NEW那他的意思就是说,要使用刚刚插入到数据表的某个值,要使用具体的某一个值的话需要这样子写:NEW.字段名(NEW.username)这样子就获取到了刚刚插入到数据表中的一个字段的值!!OLD,OLD是在delete触发器中有用的,意思是说我要删除一条数据,但是在触发器中要用到之前的那个数据,那么我就可以通过OLD来获取了!比如我删除了一条数据,里面包含一个email,现在我在触发器的内部sql中要用就可以这样子写:OLD.email!

对于INSERT语句, 只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在

和NEW以及OLD同时使用。

对于想要将自动生成的数据添加到表中的任何人来说, MySQL 虚拟列 是一个强大、易于使用和高级的功能。

INSERT 生成的列允许您在不使用and UPDATE 子句的情况下将自动生成的数据存储在表中。 这个有用的特性自 5.7 版 起就已成为 MySQL 的一部分,它代表了在生成数据时触发器的另一种方法。此外,生成的列可以帮助您更轻松、更高效地查询。

虚拟列 列类似于普通列,但您不能手动更改其值。这是因为表达式定义了如何根据从同一行的其他列中读取的其他值来生成生成列的值。因此,生成的列在表的域内工作,其定义不能涉及 JOIN 语句。

换句话说, 您可以将生成的列视为一种视图,但仅限于列。请注意,生成的列与 SQL 触发器 不同,您只能在使用 CREATE TABLE or语句时定义它们,语法如下:ALTER TABLE

该 AS (generated_column_expression) 子句指定要添加或更新到表中的列是生成的列。定义 MySQL 将用于计算列值的 generation_expression 表达式,它不能引用另一个生成的列或除当前表的列之外的任何内容。另外,请注意生成表达式只能涉及不可变函数。例如,您不能在生成的列表达式定义中使用返回当前日期的函数,因为它是一个可变函数。

您还可以在关键字前面 AS 加上 GENERATED ALWAYS 关键字以使生成的列的性质更加明确,但这是可选的。然后,您可以指示生成列的类型是 VIRTUAL 还是 STORED 。您将在下面的章节中了解这两种类型之间的区别。默认情况下,如果没有在查询中明确指定,MySQL 会将生成的列标记为 VIRTUAL .

现在让我们看看生成的列语法在 CREATE TABLE 查询中的作用:

在此示例中,该 full_name 列将自动存储 first_name 和 last_name 列的连接。

如前所述,您可以将生成的列定义为 VIRTUAL 或 STORED。现在让我们仔细看看这两种类型。

MySQL 不存储标记为 VIRTUAL 的 虚拟列 。这意味着 MySQL 在需要时动态评估其值。 BEFORE 这通常在触发任何查询后立即发生。换句话说,虚拟生成的列不占用存储空间。

MySQL 存储任何生成的标记为 STORED 的列。这意味着每次插入或更新行时,MySQL 都会评估其值并将其存储在磁盘上。换句话说,存储列需要存储空间,就好像它是普通列一样。

现在让我们进一步了解虚拟列和存储生成列的优缺点。

优点

缺点

优点

缺点

采用生成的列有几个原因,但以下三个是最重要的。

如您所见,您可以通过将四列与以下生成的列聚合来轻松生成此数据字段:

这将产生:

在这种情况下,生成的列使您能够直接在数据库级别标准化数据字段格式。此外,存储生成的列避免了每次需要时都构造此字段的不可避免的开销。

通常,您使用网站 URL 中的资源 ID 或REST API来检索您需要的数据。但是公开暴露您的 ID 可能会带来安全问题。当您发现自己使用自动增量 ID 时尤其如此,这很容易预测并使抓取或机器人攻击更容易。

为避免这种情况,您可以考虑通过使用自动生成的、随机的、更安全的公共 ID 来隐藏您的原始 ID。您可以通过对您的 ID 进行散列处理,使用虚拟生成的列来实现这一点,如下所示:

请注意,为避免生成已知的哈希值,您可以将您的 ID 与特殊关键字连接起来。 在此处了解有关 MySQL 加密和压缩功能的更多信息。

过滤数据时,有些列比其他列更有用。此外,您通常必须更改存储在列中的值的表示形式,以使过滤更简单或更直观。您可以定义一个有用的生成列来存储以所需格式执行过滤所需的信息,而不是在每个过滤器查询中执行此 *** 作。

例如,您可以定义一个生成的列,以便更轻松地找到篮球队中的球员,如下所示:

这样的列将产生:

如前所述,您只能在表中使用生成的列。此外,它们只能涉及不可变函数,并且MySQL 生成它们的值以响应 INSERT or UPDATE 查询。另一方面,触发器是 MySQL 自动执行的存储程序,每当与特定表关联的 或 事件发生 INSERT 时 UPDATE 。 DELETE 换句话说,触发器可以涉及多个表和所有 MySQL 函数。与生成的列相比,这使它们成为更完整的解决方案。同时,MySQL 触发器本质上使用和定义更复杂,也比生成的列慢。


欢迎分享,转载请注明来源: 内存溢出

原文地址: http://outofmemory.cn/zaji/8586843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
百度云笔记 百度云笔记 一级用户组
0 0
bash执行mysql的warning怎么屏蔽
上一篇 2023-04-18
查询表很快,查询相应的视图很慢为什么
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

相关文章

  • skype被注销了怎么恢复

    skype被注销了怎么恢复

    2023-2-22

  • ipad怎么看视频

    ipad怎么看视频

    2023-2-22

  • “展现量”是什么意思?

    “展现量”是什么意思?

    2023-2-21

  • eventlog是什么

    eventlog是什么

    2023-2-20

  • 风月关在邯郸啥地方?

    风月关在邯郸啥地方?

    2023-2-19

  • 诺基亚C7的特点介绍

    诺基亚C7的特点介绍

    2023-2-11

  • 2022年4月21日日出时刻表

    2022年4月21日日出时刻表

    2023-2-11

  • zoom如何使用

    zoom如何使用

    2023-2-4

  • 如何提高生产力

    如何提高生产力

    2023-2-4

  • 怎样制作相片 制作相片的方法

    怎样制作相片 制作相片的方法

    2023-2-3

  • 12580是什么电话

    12580是什么电话

    2023-2-3

  • BFW 框架 是什么

    BFW 框架 是什么

    2023-2-3

  • Moby 简介

    Moby 简介

    2023-2-3

  • 简易模式怎么设置?

    简易模式怎么设置?

    2023-2-2

  • zoom如何使用

    zoom如何使用

    2023-2-2

  • 中国移动沟通100营业厅上班时间

    中国移动沟通100营业厅上班时间

    2023-2-1

  • 设备验证收不到验证码

    设备验证收不到验证码

    2023-1-31

  • 手机网络一直是e网怎么办

    手机网络一直是e网怎么办

    2023-1-31

  • 有效时间是什么

    有效时间是什么

    2023-1-31

  • 建筑中XHL代表什么?

    建筑中XHL代表什么?

    2023-1-31

随机标签

玻璃钢生产厂家湖北玻璃钢广场雕塑厂家供应眉山商场美陈花器kaws定制玻璃钢雕塑造型阜阳玻璃钢雕塑多少钱枣强玻璃钢雕塑系广东大型主题商场美陈订购景观玻璃钢雕塑优势晋城不锈钢景观玻璃钢彩绘雕塑包头玻璃钢雕塑卡通雕塑商场美陈气球装饰拍照商场美陈时尚女郎雕塑葫芦岛玻璃钢花盆生产厂家包头小区玻璃钢雕塑厂家珠海玻璃钢造型雕塑铜川玻璃钢雕塑价格批发溆浦玻璃钢造型雕塑武汉frp玻璃钢雕塑永州玻璃钢雕塑生产厂家商场美陈布置分析玻璃钢花盆优点上海商场美陈制作供应商广州独特玻璃钢座椅雕塑泡沫玻璃钢雕塑供应厂家漯河商场美陈植物墙发光玻璃钢雕塑广西玻璃钢景观雕塑玻璃钢雕塑定制源头工厂组合式玻璃钢花盆多少钱长乐玻璃钢卡通人物雕塑贵阳景观玻璃钢雕塑联系方式香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化

保存