Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL触发器Trigger

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

作者:GreatSQL社区

这篇文章主要为大家介绍了MySQL触发器Trigger加载以及目前局限性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

概念介绍

首先需要知道MySQL中触发器特点,以及表table相关触发器加载方式

触发器分组列表Trigger_chain加载过程

1.当打开表table时通过如下函数过程加载触发器分组列表Trigger_chain

函数open_tables->open_and_process_table->handle_table->add_tables_and_routines_for_triggers

2.跟踪add_tables_and_routines_for_triggers函数内参数定义

查看TRG_EVENT_MAX定义

enum enum_trigger_event_type {
TRG_EVENT_INSERT = 0,
TRG_EVENT_UPDATE = 1,
TRG_EVENT_DELETE = 2,
TRG_EVENT_MAX
};

查看TRG_ACTION_MAX定义

enum enum_trigger_action_time_type {
TRG_ACTION_BEFORE = 0,
TRG_ACTION_AFTER = 1,
TRG_ACTION_MAX
};

触发器加载存储方式

查看函数get_triggers内可知触发器加载存储方式是二维数组m_trigger_map内

/// Triggers grouped by event, action_time.
Trigger_chain *m_trigger_map[TRG_EVENT_MAX] [TRG_ACTION_MAX];

触发器分组列表Trigger_chain添加具体触发器trigger过程

1.打开过的table其触发器通过如下函数过程加载

2.具体加载过程

说明:MySQL在新增和删除触发器的操作时都会关闭当前已经打开的table句柄,在下次打开table时会重新load相应的trigger。

Enjoy GreatSQL :)

## 关于 GreatSQL

GreatSQL是由万里数据库维护的MySQL分支,专注于提升MGR可靠性及性能,支持InnoDB并行查询特性,是适用于金融级应用的MySQL分支版本。

相关链接:

 GreatSQL社区 

 Gitee

 GitHub

以上就是MySQL触发器Trigger加载及目前局限性的详细内容,更多关于MySQL触发器Trigger的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文