首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 系列教程之(十二)扩展了解 MySQL 的存储过程,视图,触发器

    TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt 说明: # trigger_name...:触发器名称 # trigger_time:触发时间,可取值:BEFORE或AFTER # trigger_event:触发事件,可取值:INSERT、UPDATE或DELETE。...-- 查看所有的 触发器 show triggers\G; -- 删除触发器 drop trigger trigger_name; 触发器Demo 注意:如果触发器中sql有语法错误,那么整个操作都会报错...-- 2,创建 触发器 注意在创建删除触发器时,只能在删除之前才能获取到old(之前的)数据 \d // create trigger deluser before delete on users for...配置完成后重启mysql服务 进入mysql中 -- 重置binlog日志 reset master; -- 查看当前的所有日志 show binary logs; -- 创建数据库 create

    1.3K43

    MySQL online create index实现原理

    在MySQL实现online create index之前,新建索引意味着业务要停止写入,这是非常影响用户使用体验的,为此,MySQL引入了online create index,极大地减少了业务停写的时间...MySQL online create index原理 在MySQL中表格至少需要设置一个主键,如果用户未指定主键的话,内部会自动生成一个。...c2做查询的SQL,此时,为了优化此类SQL的执行性能,需要在c2列上构建索引,即 1 create index index_c2 on t1(c2); MySQL online create index...等事务结束 在执行create index语句之后,MySQL会先等待之前开启的事务先结束后,再真正开始索引的构建工作,这么做的原因是在执行create index之前开启的事务可能已经执行过某些更新SQL...MySQL的等事务结束是通过MDL(Meta Data Lock)实现的,MDL会按序唤醒锁等待者,这样就能保证create index之前开启的事务一定执行完成了。

    1.8K10

    MySQL触发器Trigger加载以及目前局限

    概念介绍 首先需要知道MySQL中触发器特点,以及表table相关触发器加载方式 MySQL中单个trigger仅支持单事件触发即单个触发器不支持类似insert or update等多事件语法操作,如果需要多事件都能被同一个表触发...{ TRG_ACTION_BEFORE = 0, TRG_ACTION_AFTER = 1, TRG_ACTION_MAX }; 查看函数get_triggers内可知触发器加载存储方式是二维数组...可以看出目前MySQL触发器加载设计方式存在一定的弊端,即TRG_EVENT分组只能按insert、update、delete区分,单次触发事件只能触发执行对应分组内的触发器,对于需要扩展单触发器同时支持多事件的方式如...然后调用create_trigger_chain函数获取到前期已经加载的触发器分组列表Trigger_chain。...说明:MySQL在新增和删除触发器的操作时都会关闭当前已经打开的table句柄,在下次打开table时会重新load相应的trigger。 Enjoy GreatSQL :)

    26820

    MySQL触发器Trigger加载以及目前局限

    概念介绍 首先需要知道MySQL中触发器特点,以及表table相关触发器加载方式 MySQL中单个trigger仅支持单事件触发即单个触发器不支持类似insert or update等多事件语法操作,如果需要多事件都能被同一个表触发...{ TRG_ACTION_BEFORE = 0, TRG_ACTION_AFTER = 1, TRG_ACTION_MAX }; 查看函数get_triggers内可知触发器加载存储方式是二维数组...可以看出目前MySQL触发器加载设计方式存在一定的弊端,即TRG_EVENT分组只能按insert、update、delete区分,单次触发事件只能触发执行对应分组内的触发器,对于需要扩展单触发器同时支持多事件的方式如...然后调用create_trigger_chain函数获取到前期已经加载的触发器分组列表Trigger_chain。...说明:MySQL在新增和删除触发器的操作时都会关闭当前已经打开的table句柄,在下次打开table时会重新load相应的trigger。

    28820

    2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS

    1.1MySQL触发器基础 触发器分类 MySql执行时机和数据操作类型分类表 按执行时机分类 BEFORE触发器:在数据操作之前执行触发器逻辑 AFTER触发器:在数据操作之后执行触发器逻辑...: -- 在插入数据之前执行的逻辑 CREATE TRIGGER `trigger_before_insert` BEFORE INSERT ON `mytable` FOR EACH ROW BEGIN...可以通过NEW来访问新值 5.NEW: CREATE TRIGGER `trigger_new_value` BEFORE INSERT ON `mytable` FOR EACH ROW BEGIN...只能在UPDATE和DELETE触发器中使用 6.OLD: CREATE TRIGGER `trigger_old_value` BEFORE UPDATE ON `mytable` FOR EACH...; END; IF和THEN: 用于条件判断,控制触发器逻辑的执行流程 8.IF和THEN: CREATE TRIGGER `trigger_if_then` BEFORE DELETE ON `mytable

    45610
    领券