System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實現(xiàn)步驟摘要】
本專利技術(shù)屬于觸發(fā)器對象系統(tǒng),具體涉及一種基于opengauss的觸發(fā)器對象系統(tǒng)及實現(xiàn)方法。
技術(shù)介紹
1、觸發(fā)器是數(shù)據(jù)庫管理系統(tǒng)中一個重要的對象,是與表事件相關(guān)的特殊的存儲過程,由事件來觸發(fā),主要用于維護(hù)數(shù)據(jù)的完整性、實現(xiàn)業(yè)務(wù)規(guī)則、執(zhí)行日志記錄等方面,用以提高數(shù)據(jù)庫的可靠性和應(yīng)用的穩(wěn)定性。當(dāng)對某個表進(jìn)行操作時,觸發(fā)器可以自動更新相關(guān)的內(nèi)容,或者根據(jù)特定條件阻止不合規(guī)的數(shù)據(jù)被修改等。觸發(fā)器不僅簡化了數(shù)據(jù)操作邏輯,提高了開發(fā)效率,也減少了因人為錯誤導(dǎo)致的數(shù)據(jù)問題。
2、opengauss現(xiàn)有觸發(fā)器主要由兩部分組成,分別是觸發(fā)器函數(shù)和觸發(fā)器,必須先創(chuàng)建觸發(fā)器函數(shù),再創(chuàng)建基于該函數(shù)的觸發(fā)器,在觸發(fā)器條件被觸發(fā)時執(zhí)行指定的函數(shù),刪除時需要同時刪除相關(guān)觸發(fā)器函數(shù),使用方法較為復(fù)雜。另外,當(dāng)前opengauss中的觸發(fā)器沒有權(quán)限控制,觸發(fā)器可能會被濫用,對數(shù)據(jù)庫的數(shù)據(jù)和結(jié)構(gòu)造成損害。
技術(shù)實現(xiàn)思路
1、為了克服opengauss現(xiàn)有觸發(fā)器存在的上述缺陷,優(yōu)化opengauss數(shù)據(jù)庫中觸發(fā)器對象的使用方法,避免與函數(shù)的級聯(lián),提高觸發(fā)器的安全性,本專利技術(shù)提出了一種新的基于opengauss的觸發(fā)器對象系統(tǒng)及實現(xiàn)方法。
2、本專利技術(shù)觸發(fā)器對象系統(tǒng)包括觸發(fā)器創(chuàng)建、觸發(fā)器使用和觸發(fā)器刪除三個模塊,無需創(chuàng)建觸發(fā)器函數(shù),即可直接創(chuàng)建觸發(fā)器,在刪除觸發(fā)器時直接刪除即可,無需考慮相關(guān)依賴。同時,本專利技術(shù)觸發(fā)器對象系統(tǒng)增加了對用戶權(quán)限的檢查,增強了數(shù)據(jù)庫的安全性。
3、具
4、觸發(fā)器創(chuàng)建模塊,主要包含兩個部分,觸發(fā)器頭和觸發(fā)器體。其中,觸發(fā)器頭用于規(guī)定觸發(fā)器用戶權(quán)限、觸發(fā)器依賴的表對象、觸發(fā)操作、觸發(fā)類型、觸發(fā)位置、觸發(fā)順序、觸發(fā)頻率和觸發(fā)條件等;觸發(fā)器體包含觸發(fā)器被觸發(fā)后需要執(zhí)行的語句。
5、觸發(fā)器調(diào)用模塊,如果用戶要對觸發(fā)器依賴的表對象執(zhí)行觸發(fā)操作,首先檢查是否有相關(guān)觸發(fā)器,如果有則判斷觸發(fā)條件,符合觸發(fā)條件時按照觸發(fā)器指定的順序執(zhí)行觸發(fā)器語句和觸發(fā)操作語句。
6、觸發(fā)器刪除模塊,opengauss中原有的觸發(fā)器刪除必須指定觸發(fā)器基于的對象表,并需要指定是否需要級聯(lián)刪除,本專利技術(shù)系統(tǒng)中的觸發(fā)器刪除模塊在刪除觸發(fā)器時只需在有相關(guān)權(quán)限時drop相應(yīng)觸發(fā)器即可。
7、進(jìn)一步地,在本專利技術(shù)中,觸發(fā)器用戶權(quán)限訪問控制在創(chuàng)建觸發(fā)器時,用戶需要具有對于相關(guān)表的create?trigger權(quán)限,系統(tǒng)管理員可以創(chuàng)建擁有者為自己的觸發(fā)器,也可以創(chuàng)建擁有者為其他普通用戶的觸發(fā)器;而普通用戶只能創(chuàng)建擁有者為自己的觸發(fā)器。根據(jù)擁有者的權(quán)限可以確定觸發(fā)器可以執(zhí)行的操作權(quán)限。
8、進(jìn)一步地,在本專利技術(shù)中,觸發(fā)器的觸發(fā)操作包含對觸發(fā)器表對象的增(insert)、刪(delete)、改(update)和截斷(truncate)等操作,在對象產(chǎn)生相應(yīng)操作時觸發(fā)執(zhí)行觸發(fā)器,觸發(fā)操作可以為一個或多個。
9、進(jìn)一步地,在本專利技術(shù)中,觸發(fā)器的觸發(fā)類型是根據(jù)觸發(fā)器執(zhí)行的語句和表對象對操作的相對位置進(jìn)行分類的,其中,before是在觸發(fā)事件發(fā)生前執(zhí)行觸發(fā)器語句,after是在觸發(fā)事件發(fā)生后執(zhí)行觸發(fā)器語句,instead?of是直接替代觸發(fā)事件執(zhí)行觸發(fā)器語句。
10、進(jìn)一步地,觸發(fā)器的觸發(fā)順序是指在同一對象的同一觸發(fā)事件、同一觸發(fā)位置包含多個觸發(fā)器時,各觸發(fā)器的執(zhí)行順序。在本專利技術(shù)中,如圖1所示,如果指定先于(precedes)或后于(follows)某個觸發(fā)器則明確按照指定的執(zhí)行順序,不能先于(precedes)或后于(follows)多個觸發(fā)器,同時指定順序的觸發(fā)器和基礎(chǔ)觸發(fā)器類型必須一致。如多個觸發(fā)器都指定follows同一觸發(fā)器,則按照創(chuàng)建的順序,先執(zhí)行最新創(chuàng)建的觸發(fā)器;如多個觸發(fā)器都指定precedes同一觸發(fā)器,則按照創(chuàng)建的順序,先執(zhí)行最早創(chuàng)建的觸發(fā)器。未指定順序時,需要同時執(zhí)行,按觸發(fā)器名稱進(jìn)行排序順序觸發(fā)。
11、進(jìn)一步地,觸發(fā)器的觸發(fā)頻率是指產(chǎn)生觸發(fā)操作時觸發(fā)器觸發(fā)的次數(shù),在本專利技術(shù)中,可以是觸發(fā)事件的每一行都觸發(fā)一次,也可以是每個sql只觸發(fā)一次。
12、進(jìn)一步地,觸發(fā)器的觸發(fā)條件是根據(jù)指定的條件表達(dá)式來判斷是否觸發(fā),在本專利技術(shù)中,只有條件為true時才會觸發(fā)。
13、進(jìn)一步地,在本專利技術(shù)中,刪除觸發(fā)器時指定觸發(fā)器名稱,根據(jù)觸發(fā)器名稱刪除對應(yīng)的觸發(fā)器,要求在同一個數(shù)據(jù)庫中不能存在同名的觸發(fā)器,在創(chuàng)建觸發(fā)器時可以以替代原觸發(fā)器或者重命名的方式來實現(xiàn)。
14、進(jìn)一步地,本專利技術(shù)還提供了上述觸發(fā)器對象系統(tǒng)的實現(xiàn)方法,包括下述步驟:
15、s1.?用戶創(chuàng)建觸發(fā)器:系統(tǒng)管理員直接創(chuàng)建觸發(fā)器,普通用戶則需要系統(tǒng)管理員對其賦予創(chuàng)建觸發(fā)器權(quán)限后創(chuàng)建觸發(fā)器;
16、s2.?檢查用戶的create?trigger權(quán)限,若用戶無此權(quán)限,則需要系統(tǒng)管理員對其賦予此權(quán)限;
17、s3.?指定觸發(fā)器擁有者:系統(tǒng)管理員可指定自己或普通用戶作為觸發(fā)器擁有者,普通用戶只能指定自己作為觸發(fā)器擁有者;
18、s4.?選擇觸發(fā)類型和觸發(fā)操作,設(shè)置觸發(fā)頻率和觸發(fā)條件,觸發(fā)執(zhí)行對自動修改表插入基表中的數(shù)據(jù)或者更新后的數(shù)據(jù);
19、s5.?調(diào)用觸發(fā)器需要在基表中分別插入或更新數(shù)據(jù),先對基表進(jìn)行插入,查詢修改記錄表新增一條記錄,記錄內(nèi)容為插入的數(shù)據(jù);
20、s6.?對基表進(jìn)行更新操作,然后查詢修改記錄表,根據(jù)新增數(shù)據(jù)行判斷插入和更新基表是否都觸發(fā)了創(chuàng)建的觸發(fā)器;
21、s7.?用戶直接刪除觸發(fā)器,再次執(zhí)行插入和更新數(shù)據(jù);
22、s8.?查詢修改記錄表中沒有新增數(shù)據(jù)說明觸發(fā)器已經(jīng)被刪除。
23、另外,本專利技術(shù)還提供了一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計算機程序,所述程序被處理器執(zhí)行時實現(xiàn)上述的基于opengauss的觸發(fā)器對象系統(tǒng)的實現(xiàn)方法的步驟。
24、綜上,本專利技術(shù)基于opengauss的觸發(fā)器對象系統(tǒng)可以獨立于觸發(fā)器函數(shù)直接創(chuàng)建、刪除、使用,避免了原有模式的強依賴關(guān)系,使觸發(fā)器的使用可以更加靈活、便捷。同時,本系統(tǒng)中增加了觸發(fā)器權(quán)限訪問控制,使觸發(fā)器的使用更加安全。
本文檔來自技高網(wǎng)...【技術(shù)保護(hù)點】
1.一種基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器對象系統(tǒng)包括:觸發(fā)器創(chuàng)建模塊、觸發(fā)器調(diào)用模塊和觸發(fā)器刪除模塊;其中:
2.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器用戶權(quán)限是指在創(chuàng)建觸發(fā)器時,用戶需要具有對于相關(guān)表的CREATE?TRIGGER權(quán)限;
3.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)操作包括對觸發(fā)器依賴的表對象的增、刪、改和截斷操作,觸發(fā)操作為一個或多個。
4.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)類型是指根據(jù)觸發(fā)器執(zhí)行的語句和表對象對操作的相對位置進(jìn)行分類,其中,BEFORE是在觸發(fā)事件發(fā)生前執(zhí)行觸發(fā)器語句,AFTER是在觸發(fā)事件發(fā)生后執(zhí)行觸發(fā)器語句,INSTEAD?OF是直接替代觸發(fā)事件執(zhí)行觸發(fā)器語句。
5.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)順序是指在同一對象的同一觸發(fā)事件、同一觸發(fā)位置包含多個觸發(fā)器時,各觸發(fā)器的執(zhí)行順序;
>6.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)頻率是指產(chǎn)生觸發(fā)操作時觸發(fā)器觸發(fā)的次數(shù),觸發(fā)頻率可選擇觸發(fā)事件的每一行都觸發(fā)一次或每個SQL只觸發(fā)一次。
7.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)條件是根據(jù)指定的條件表達(dá)式來判斷是否觸發(fā),只有條件為true時才會觸發(fā)。
8.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器刪除模塊刪除觸發(fā)器時指定觸發(fā)器名稱,根據(jù)觸發(fā)器名稱刪除對應(yīng)的觸發(fā)器。
9.根據(jù)權(quán)利要求1所述的基于openGauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器對象系統(tǒng)的實現(xiàn)方法包括下述步驟:
10.一種計算機可讀存儲介質(zhì),所述存儲介質(zhì)上存儲有計算機程序,所述程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求9所述的基于openGauss的觸發(fā)器對象系統(tǒng)的實現(xiàn)方法的步驟。
...【技術(shù)特征摘要】
1.一種基于opengauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器對象系統(tǒng)包括:觸發(fā)器創(chuàng)建模塊、觸發(fā)器調(diào)用模塊和觸發(fā)器刪除模塊;其中:
2.根據(jù)權(quán)利要求1所述的基于opengauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)器用戶權(quán)限是指在創(chuàng)建觸發(fā)器時,用戶需要具有對于相關(guān)表的create?trigger權(quán)限;
3.根據(jù)權(quán)利要求1所述的基于opengauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)操作包括對觸發(fā)器依賴的表對象的增、刪、改和截斷操作,觸發(fā)操作為一個或多個。
4.根據(jù)權(quán)利要求1所述的基于opengauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)類型是指根據(jù)觸發(fā)器執(zhí)行的語句和表對象對操作的相對位置進(jìn)行分類,其中,before是在觸發(fā)事件發(fā)生前執(zhí)行觸發(fā)器語句,after是在觸發(fā)事件發(fā)生后執(zhí)行觸發(fā)器語句,instead?of是直接替代觸發(fā)事件執(zhí)行觸發(fā)器語句。
5.根據(jù)權(quán)利要求1所述的基于opengauss的觸發(fā)器對象系統(tǒng),其特征在于,所述觸發(fā)順序是指在同一...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:趙曉琳,蘇章艷,
申請(專利權(quán))人:北京海量數(shù)據(jù)技術(shù)股份有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評論。發(fā)表了對其他瀏覽者有用的留言會獲得科技券。