亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL觸發(fā)器Trigger加載及目前局限性

 更新時(shí)間:2023年05月18日 09:20:50   作者:GreatSQL社區(qū)  
這篇文章主要為大家介紹了MySQL觸發(fā)器Trigger加載以及目前局限性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

概念介紹

首先需要知道MySQL中觸發(fā)器特點(diǎn),以及表table相關(guān)觸發(fā)器加載方式

  • MySQL中單個(gè)trigger僅支持單事件觸發(fā)即單個(gè)觸發(fā)器不支持類似insert or update等多事件語(yǔ)法操作,如果需要多事件都能被同一個(gè)表觸發(fā),只能分別建立多個(gè)對(duì)應(yīng)trigger。
  • 觸發(fā)器加載首先需要加載觸發(fā)器分組列表Trigger_chain,后續(xù)再將具體觸發(fā)器添加到Trigger_chain內(nèi)。
  • 表table屬性內(nèi)可包含多個(gè)觸發(fā)器分組列表Trigger_chain,Trigger_chain用于加載不同類別的觸發(fā)器,主要類別有insert、update或delete類型。
  • 觸發(fā)器分組列表Trigger_chain內(nèi)m_triggers又可加載多個(gè)具體屬于該分組的具體觸發(fā)器。

觸發(fā)器分組列表Trigger_chain加載過(guò)程

1.當(dāng)打開(kāi)表table時(shí)通過(guò)如下函數(shù)過(guò)程加載觸發(fā)器分組列表Trigger_chain

函數(shù)open_tables->open_and_process_table->handle_table->add_tables_and_routines_for_triggers

2.跟蹤add_tables_and_routines_for_triggers函數(shù)內(nèi)參數(shù)定義

查看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
};

觸發(fā)器加載存儲(chǔ)方式

查看函數(shù)get_triggers內(nèi)可知觸發(fā)器加載存儲(chǔ)方式是二維數(shù)組m_trigger_map內(nèi)

/// Triggers grouped by event, action_time.
Trigger_chain *m_trigger_map[TRG_EVENT_MAX] [TRG_ACTION_MAX];
  • 綜合TRG_EVENT_MAX和TRG_ACTION_MAX以及m_trigger_map可以看出目前MySQL觸發(fā)器加載設(shè)計(jì)方式存在一定的弊端,即TRG_EVENT分組只能按insert、update、delete區(qū)分,單次觸發(fā)事件只能觸發(fā)執(zhí)行對(duì)應(yīng)分組內(nèi)的觸發(fā)器,對(duì)于需要擴(kuò)展單觸發(fā)器同時(shí)支持多事件的方式如:insert or update 、update or delete 等方式將需要較大的改造。

觸發(fā)器分組列表Trigger_chain添加具體觸發(fā)器trigger過(guò)程

1.打開(kāi)過(guò)的table其觸發(fā)器通過(guò)如下函數(shù)過(guò)程加載

  • 函數(shù)open_tables->open_table_entry_fini->check_n_load

2.具體加載過(guò)程

  • 通過(guò)函數(shù) check_n_load內(nèi)調(diào)用load_triggers函數(shù)從磁盤(pán)加載已經(jīng)建好的觸發(fā)器t。
  • 然后調(diào)用create_trigger_chain函數(shù)獲取到前期已經(jīng)加載的觸發(fā)器分組列表Trigger_chain。
  • 最后觸發(fā)器分組列表Trigger_chain調(diào)用add_trigger添加具體觸發(fā)器t至分組列表內(nèi)。
  • 當(dāng)目標(biāo)表table有insert、update或delete操作時(shí),即會(huì)觸發(fā)執(zhí)行對(duì)應(yīng)分組列表Trigger_chain內(nèi)相應(yīng)分組的觸發(fā)器。

說(shuō)明:MySQL在新增和刪除觸發(fā)器的操作時(shí)都會(huì)關(guān)閉當(dāng)前已經(jīng)打開(kāi)的table句柄,在下次打開(kāi)table時(shí)會(huì)重新load相應(yīng)的trigger。

Enjoy GreatSQL :)

## 關(guān)于 GreatSQL

GreatSQL是由萬(wàn)里數(shù)據(jù)庫(kù)維護(hù)的MySQL分支,專注于提升MGR可靠性及性能,支持InnoDB并行查詢特性,是適用于金融級(jí)應(yīng)用的MySQL分支版本。

相關(guān)鏈接:

 GreatSQL社區(qū) 

 Gitee

 GitHub

以上就是MySQL觸發(fā)器Trigger加載及目前局限性的詳細(xì)內(nèi)容,更多關(guān)于MySQL觸發(fā)器Trigger的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Windows免安裝MySQL?8.0.28?版本圖文教程

    Windows免安裝MySQL?8.0.28?版本圖文教程

    這篇文章主要為大家詳細(xì)介紹了Windows免安裝MySQL8.0.28版本圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • mysql如何在線修改主從復(fù)制選項(xiàng)

    mysql如何在線修改主從復(fù)制選項(xiàng)

    這篇文章主要介紹了mysql如何在線修改主從復(fù)制選項(xiàng),幫助大家更好的理解和學(xué)習(xí)mysql,感興趣的朋友可以了解下
    2020-08-08
  • Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù)

    Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù)

    這篇文章主要介紹了Mysql 實(shí)現(xiàn)字段拼接的三個(gè)函數(shù),幫助大家更好的理解和使用MySQL 數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
    2020-11-11
  • mysql數(shù)據(jù)庫(kù)太大了如何備份與還原

    mysql數(shù)據(jù)庫(kù)太大了如何備份與還原

    今天小編就為大家分享一篇關(guān)于mysql數(shù)據(jù)庫(kù)太大了如何備份與還原,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Linux下自動(dòng)備份MySQL的方法

    Linux下自動(dòng)備份MySQL的方法

    這篇文章主要介紹了Linux下自動(dòng)備份MySQL的方法,需要的朋友可以參考下
    2015-01-01
  • 探究MySQL優(yōu)化器對(duì)索引和JOIN順序的選擇

    探究MySQL優(yōu)化器對(duì)索引和JOIN順序的選擇

    這篇文章主要介紹了探究MySQL優(yōu)化器對(duì)索引和JOIN順序的選擇,包括在優(yōu)化器做出錯(cuò)誤判斷時(shí)的選擇情況,需要的朋友可以參考下
    2015-05-05
  • mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫(xiě)入到文件的3種方法舉例

    mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫(xiě)入到文件的3種方法舉例

    這篇文章主要給大家介紹了關(guān)于mysql查詢結(jié)果命令行方式導(dǎo)出/輸出/寫(xiě)入到文件的3種方法,?在使用MySQL進(jìn)行數(shù)據(jù)庫(kù)操作的過(guò)程中,我們經(jīng)常需要將查詢結(jié)果導(dǎo)出到文件中以備后續(xù)分析和處理,需要的朋友可以參考下
    2023-08-08
  • 詳解MySQL8.0 密碼過(guò)期策略

    詳解MySQL8.0 密碼過(guò)期策略

    這篇文章主要介紹了MySQL8.0 密碼過(guò)期策略的相關(guān)資料,幫助大家更好的理解和使用MySQL8.0的新功能,感興趣的朋友可以了解下
    2020-11-11
  • MySQL中創(chuàng)建表的三種方法匯總

    MySQL中創(chuàng)建表的三種方法匯總

    這篇文章主要介紹了MySQL中創(chuàng)建表的三種方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 如何添加一個(gè)mysql用戶并給予權(quán)限詳解

    如何添加一個(gè)mysql用戶并給予權(quán)限詳解

    在很多時(shí)候我們并不會(huì)直接利用mysql的root用戶進(jìn)行項(xiàng)目的開(kāi)發(fā),一般我們都會(huì)創(chuàng)建一個(gè)具有部分權(quán)限的用戶,下面這篇文章主要給大家介紹了關(guān)于如何添加一個(gè)mysql用戶并給予權(quán)限的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評(píng)論