关于创建mysql触发器

创建mysql触发器时候,语法没出现错误
出现的问题为
应为8个值,现在有7个值

img

你前面insert里写了8个字段
可是select里只写了7个字段,数量不一致

这个字段哪里来呢

img

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7794766
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:关于mysql修改存储路径以及修改完无法启动mysql服务的问题
  • 同时,你还可以查看手册:MySQL 字符集、对齐方式、统一编码 配置应用程序的字符集和排序 中的内容
  • 除此之外, 这篇博客: 【图灵MySQL】深入理解Mysql索引底层数据结构与算法中的 联合索引的底层存储结构长什么样? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 想要了解这个其实就会和 索引最左前缀原则底层实现原理 扯上关系!

    只要我们的联合索引设计的好,其实可以通过三四个联合索引,将80%的SQL查询语句都覆盖到的!

    以下那一条SQL会走索引?

    -- 联合索引
    KEY 'idx_name_age_position' ('name','age','position') USING BTREE;
    
    -- 以下那一条SQL会走索引?
    EXPLAIN SELECT * FROM employees WHERE name = 'Bill' and age = 30;
    EXPLAIN SELECT * FROM employees WHERE age = 30 and position = 'dev';
    EXPLAIN SELECT * FROM employees WHERE position = 31;

    显然,我们根据 索引最左前缀原则底层实现原理 可以知道只有第一条SQL会走索引!

    至于为什么,我们以第二条SQL为例,首先我们知道该联合主键的('name','age','position')按这个顺序排序的,也就是他们在索引树中,先比较name字段,当name一样时,才会比较age字段,以此类推...

    第二条SQL为什么没有走索引就很好解释了。当缺少name的时候,后面的字段已经是无序的了,根本就走不了索引。

    所以我们想要搞清楚MySQL的索引,究其根本,还是要弄明白B+树这种数据结构,理解它的执行逻辑。

  • 您还可以看一下 刘运强老师的MySQL数据库从入门到实战课课程中的 存储过程实战:给指定用户发邮件通知小节, 巩固相关知识点