国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了MySQL觸發(fā)器Trigger加載以及目前局限。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

  • GreatSQL社區(qū)原創(chuàng)內(nèi)容未經(jīng)授權不得隨意使用,轉(zhuǎn)載請聯(lián)系小編并注明來源。
  • GreatSQL是MySQL的國產(chǎn)分支版本,使用上與MySQL一致。
  • 作者: 亮
  • 文章來源:GreatSQL社區(qū)原創(chuàng)

概念介紹

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

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

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

1.當打開表table時通過如下函數(shù)過程加載觸發(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

};

查看函數(shù)get_triggers內(nèi)可知觸發(fā)器加載存儲方式是二維數(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ā)器加載設計方式存在一定的弊端,即TRG_EVENT分組只能按insert、update、delete區(qū)分,單次觸發(fā)事件只能觸發(fā)執(zhí)行對應分組內(nèi)的觸發(fā)器,對于需要擴展單觸發(fā)器同時支持多事件的方式如:insert or update 、update or delete 等方式將需要較大的改造。

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

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

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

2.具體加載過程

  • 通過函數(shù) check_n_load內(nèi)調(diào)用load_triggers函數(shù)從磁盤加載已經(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)。

當目標表table有insert、update或delete操作時,即會觸發(fā)執(zhí)行對應分組列表Trigger_chain內(nèi)相應分組的觸發(fā)器。

說明:MySQL在新增和刪除觸發(fā)器的操作時都會關閉當前已經(jīng)打開的table句柄,在下次打開table時會重新load相應的trigger。


Enjoy GreatSQL ??

關于 GreatSQL

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

相關鏈接: GreatSQL社區(qū) Gitee GitHub Bilibili

GreatSQL社區(qū):

社區(qū)博客有獎征稿詳情:https://greatsql.cn/thread-100-1-1.html

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

技術交流群:

微信:掃碼添加GreatSQL社區(qū)助手微信好友,發(fā)送驗證信息加群

MySQL觸發(fā)器Trigger加載以及目前局限文章來源地址http://www.zghlxwxcb.cn/news/detail-446031.html

到了這里,關于MySQL觸發(fā)器Trigger加載以及目前局限的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Unity】Trigger觸發(fā)器失效沒反應的解決辦法

    【Unity】Trigger觸發(fā)器失效沒反應的解決辦法

    今天遇到了一個問題,創(chuàng)建的角色進入傳送門的時候無法傳送。 看了所有的代碼,確定沒有問題之后,把目標瞄準到了Trigger上,在觸發(fā)中添加了輸出之后發(fā)現(xiàn),觸發(fā)器確實沒有觸發(fā) 眾所周知,觸發(fā)器觸發(fā)需要兩者都有觸發(fā)器,其中一者勾選Is Trigger,其中一者有剛體就可以了

    2024年02月13日
    瀏覽(20)
  • Unity_網(wǎng)格碰撞器-MeshCollider-觸發(fā)器-Trigger 網(wǎng)格碰撞器(MeshCollider)內(nèi)部沒有觸發(fā)檢測 只在表面有觸發(fā)檢測

    Unity_網(wǎng)格碰撞器-MeshCollider-觸發(fā)器-Trigger 網(wǎng)格碰撞器(MeshCollider)內(nèi)部沒有觸發(fā)檢測 只在表面有觸發(fā)檢測

    Unity的觸發(fā)器功能很好,但是也有問題。我來講講問題以及解決方案。 先上視頻給大家看看效果: 自制觸發(fā)器 首先約定幾個特殊名詞。 基元游戲物體:Cube、Sphere之類的。 基元碰撞器:BoxCollider、SphereCollider之類的。 基元觸發(fā)器:把基元碰撞體的IsTrigger選中,就是基元觸發(fā)器

    2024年02月03日
    瀏覽(22)
  • 第68講:MySQL觸發(fā)器的核心概念以及常見的觸發(fā)類型應用案例

    觸發(fā)器是與表中數(shù)據(jù)相關的數(shù)據(jù)庫對象,當表中的數(shù)據(jù)產(chǎn)生inster、update、delete這類操作時,可以通過觸發(fā)器在這些動作之前或者之后,去完成相應的操作,例如向表中插入一條數(shù)據(jù),插入數(shù)據(jù)之后通過觸發(fā)器完成一些操作。 在觸發(fā)器中會定義很多的SQL語句集合,當滿足執(zhí)行觸

    2024年02月05日
    瀏覽(24)
  • MySQL-SQL存儲函數(shù)以及觸發(fā)器詳解

    MySQL-SQL存儲函數(shù)以及觸發(fā)器詳解

    ?? 作者:小劉在C站 ?? 個人主頁: ?小劉主頁? ?? 努力不一定有回報,但一定會有收獲加油!一起努力,共赴美好人生! ?? 學習兩年總結(jié)出的運維經(jīng)驗,以及思科模擬器全套網(wǎng)絡實驗教程。專欄: 云計算技術 ??小劉私信可以隨便問,只要會絕不吝嗇,感謝CSD

    2024年02月11日
    瀏覽(95)
  • 【MySQL觸發(fā)器】觸發(fā)器的使用、創(chuàng)建、修改及刪除

    【MySQL觸發(fā)器】觸發(fā)器的使用、創(chuàng)建、修改及刪除

    一、什么是觸發(fā)器 二、創(chuàng)建觸發(fā)器 ①創(chuàng)建一個insert事件觸發(fā)器 ②創(chuàng)建一個delete 事件觸發(fā)器? 三、觸發(fā)器包含多條執(zhí)行語句 四、查看觸發(fā)器? ①SHOW TRIGGERS語句查看觸發(fā)器 ②查看系統(tǒng)表triggers實現(xiàn)查看觸發(fā)器?? 五、觸發(fā)器的刪除? ???? 當我們對一個表進行數(shù)據(jù)操作時,需

    2023年04月08日
    瀏覽(17)
  • MySQL | MySQL觸發(fā)器

    目錄 一、創(chuàng)建觸發(fā)器 1.2 創(chuàng)建只有一個執(zhí)行語句的觸發(fā)器 1.2 創(chuàng)建有多個執(zhí)行語句的觸發(fā)器 二、查看觸發(fā)器 2.1 利用SHOW TRIGGERS語句查看觸發(fā)器信息 2.2 在triggers表中查看觸發(fā)器信息 三、刪除觸發(fā)器 觸發(fā)器是一個特殊的存儲過程,不同的是,執(zhí)行存儲過程要使用CALL語句來調(diào)用,

    2024年02月14日
    瀏覽(25)
  • MySQL-觸發(fā)器

    目錄 ??觸發(fā)器簡介 ??創(chuàng)建觸發(fā)器 ??創(chuàng)建 BEFORE 類型觸發(fā)器 ??創(chuàng)建 AFTER 類型觸發(fā)器 ??刪除觸發(fā)器(DROP TRIGGER) ??刪除觸發(fā)器 ??語法總結(jié) ??insert ??delete ??update ??:MySQL專欄 ????????MySQL 數(shù)據(jù)庫中觸發(fā)器是一個特殊的存儲過程,不同的是執(zhí)行存儲過程要使用 CAL

    2024年01月16日
    瀏覽(24)
  • MySQL 觸發(fā)器

    觸發(fā)器是與表有關的數(shù)據(jù)庫對象,指在insert/update/delete之前或之后,觸發(fā)并執(zhí)行觸發(fā)器中定義SQL語句集合。觸發(fā)器的這種特性可以協(xié)助應用在數(shù)據(jù)庫端確保數(shù)據(jù)的完整性,日志記錄,數(shù)據(jù)校驗等操作。 使用別 名OLD 和 NEW 來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,這與其他的數(shù)據(jù)庫

    2024年02月08日
    瀏覽(20)
  • MySQL進階——觸發(fā)器

    MySQL進階——觸發(fā)器

    同存儲過程和函數(shù)類似,MySQL中的觸發(fā)器也是存儲在系統(tǒng)內(nèi)部的一段程序代碼,可以把它看作是一個特殊的存儲過程。所不同的是,觸發(fā)器無需人工調(diào)用,當程序滿足定義條件時就會被MySQL自動調(diào)用。這些條件可以稱為觸發(fā)事件,包括INSERT、UPDATE和DELETE操作。 從MySQL5.7開始,可

    2024年02月04日
    瀏覽(15)
  • 【MySQL進階】MySQL觸發(fā)器詳解

    【MySQL進階】MySQL觸發(fā)器詳解

    序號 系列文章 7 【MySQL基礎】運算符及相關函數(shù)詳解 8 【MySQL基礎】MySQL多表操作詳解 9 【MySQL進階】MySQL事務詳解 10 【MySQL進階】MySQL視圖詳解 大家好,我是小楊!前面我已經(jīng)為大家介紹了MySQL中的進階知識-視圖,那么今天我們就給大家講解MySQL中的觸發(fā)器這部分的相關內(nèi)容,

    2024年02月03日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包