亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

維護檢查實用程序所用例外表的方法

文檔序號:6419218閱讀:198來源:國知局
專利名稱:維護檢查實用程序所用例外表的方法
技術領域
本發(fā)明涉及數(shù)據(jù)庫管理系統(tǒng),尤其涉及一種用于在數(shù)據(jù)庫管理系統(tǒng)中檢查實用程序所用例外表的方法。
定單項目表
雖然上述定單項目表顯示了四行,該表格可以具有用于一個公司所有定單的幾百萬行,例如四百萬行。定單項目表還具有例如三個索引關鍵字和兩個外部關鍵字。一個索引關鍵字是用于表格特定行的一個標識符,而外部關鍵字也標識一行,但是也如上所述被用于參照整性(referential integrity)。例如,在定單項目表中,一個索引關鍵字可以基于定單編號,另一個索引關鍵字基于顧客姓名,第三關鍵字基于運送到的郵編。如在現(xiàn)有技術中公知的,用于一個特定表格的一個索引關鍵字表示行的標識(RID)和對該行的一個選定值(例如索引關鍵字數(shù)值)。
索引關鍵字可以被用來生成用于該表格的一個索引,該索引便于隨后搜索該表格中的特定數(shù)據(jù)。例如,定單項目表將具有三個索引(例如每個索引關鍵字使用一個索引),每個索引被存儲在一個索引空間中。類似于表格空間,索引空間例如是DASD的一個指定部分。因而,如果一個用戶在定單項目表中尋找包含一個特定購買者姓名的行,數(shù)據(jù)庫管理系統(tǒng)將在表格中查找顧客索引,以識別出該顧客名稱的所有出現(xiàn),而不需要讀取整個表格來找到該行的位置。
DB2管理者分析訪問一個數(shù)據(jù)庫表格的應用程序的性能特性以發(fā)現(xiàn)用于快速訪問數(shù)據(jù)庫表格的最佳索引結(jié)構(gòu)。將用作一個索引的數(shù)值必需比認真地選擇,因為每個索引導致數(shù)據(jù)庫系統(tǒng)的額外開銷。例如,諸如增加或刪除的數(shù)據(jù)庫表格中的每次處理要求用于該表格的每個索引也被更新。因而,希望用于一個表格的索引數(shù)被最小化以增強應用程序的性能。例如根據(jù)通常是在線處理用戶的表格用戶最頻繁訪問的數(shù)據(jù)來選擇用于數(shù)據(jù)庫表格的索引。索引關鍵字通常不依據(jù)外部關鍵字,因為外部關鍵字主要用于驗證目的(例如強制約束constraintenforcement)。
如在現(xiàn)有技術中公知,數(shù)據(jù)庫中的每個表格可以是一個父表或一個子表或者兩者。一個子表通過外部關鍵字數(shù)值或者在子表的列中包含的數(shù)值與一個父表相聯(lián)系。例如,一個外部關鍵字數(shù)值可以在一個子表中出現(xiàn)多次(例如子表中的多行可以具有相同的外部關鍵字,例如定單項目表中的“客戶編號”和“產(chǎn)品編碼”項目),但是每個外部關鍵字必需與子表的父表中的一個唯一關鍵字相聯(lián)系。
參照完整性確保每個外部關鍵字數(shù)值是有效的(例如具有父表中的一個相應主關鍵字)。因此,參照完整性(RI)是指,當表格中一行某列中的值還存在于另一個表格的一個索引中時,這個值是有效的。如果一行違反了一個約束就不應當在一個表格中。如上所示的定單項目表具有兩個外部關鍵字,它具有在“客戶編號”和“產(chǎn)品編碼”上的RI約束。如在現(xiàn)有技術中公知的,當DB2數(shù)據(jù)庫管理系統(tǒng)的一個用戶創(chuàng)建一個表格時,用戶還定義該表格的約束條件(例如用戶還定義相關完整性標準)。下面圖示的是一個示例性產(chǎn)品表和一個示例性客戶表(例如用于定單項目表中外部關鍵字的父表)。
產(chǎn)品表
產(chǎn)品表顯示了五行,當然該表可以具有用于一個公司不同的所有產(chǎn)品的幾千行。產(chǎn)品表例如具有基于“產(chǎn)品編碼”列的一個索引,其值以升序表示?!爱a(chǎn)品編碼”列中的每個數(shù)值都是唯一的,因為僅有一個產(chǎn)品編碼被分配給每個產(chǎn)品,因此在這個表格中,一個產(chǎn)品編碼不可能被包括多次。因此,用于該產(chǎn)品表的一個索引將包括關鍵字數(shù)字(例如在產(chǎn)品編碼列中所存儲的數(shù)值)和RID。產(chǎn)品表索引將駐留在一個DB2索引空間中。
下面表示的客戶表格顯示了四行,當然這個表格也可以具有用于一個公司所有客戶的幾千行??蛻舯砝缇哂幸粋€基于“客戶編號”列的索引,其值以升序被排列?!翱蛻艟幪枴绷兄械闹得總€都是唯一的,因為僅有一個該列的客戶編號被分配給每個客戶名稱,因此一個客戶編號在該表中將不會被包括多次。因此,用于客戶表的一個索引將包括關鍵字數(shù)值(例如“客戶編號”列的數(shù)值)和一個RID。客戶索引也將駐留在一個DB2索引空間中。
客戶表
如上面的表格所示,定單項目表中的所有行是有效的(例如沒有違反參照完整性約束),因為定單項目表的產(chǎn)品編碼列中的外部關鍵字的值也存在于產(chǎn)品表中,定單項目表的客戶編號列中的值也存在于客戶表中。
諸如DB2的常規(guī)數(shù)據(jù)庫管理系統(tǒng)向用戶提供識別在一行可以被添加到一個表格之前它必需滿足的具體條件的能力。這些條件被稱作“約束”,因為它們限制一行可以包括的值。約束例如包括檢查約束和參照完整性約束。檢查約束包括例如用于一個特定值的限定標準,例如在00000到99999范圍內(nèi)的郵政編碼值(例如在定單項目表中的“運送到的郵編”值)。如上所述,當表格內(nèi)一行中的一個數(shù)值還存在于另一個表格的一個索引中時,參考整體約束確保該數(shù)值是正確的。
在將數(shù)據(jù)被裝載在數(shù)據(jù)庫表格內(nèi)之前或者在數(shù)據(jù)已經(jīng)被裝載到一個數(shù)據(jù)庫表格內(nèi)之后可以執(zhí)行強制約束。當在將數(shù)據(jù)裝入數(shù)據(jù)庫表格內(nèi)之后執(zhí)行強制約束,例如作為一個硬件的軟件故障之后的恢復操作的一部分,通常由一個檢查實用程序來執(zhí)行強制約束,例如IBM公司的CHECK DATA、BMC軟件公司的CHECK PLUS和白金技術公司的FASTCHECK。
常規(guī)檢查實用程序確保表格中的數(shù)據(jù)不違反已經(jīng)為該表格建立的任何約束??梢栽谏杀砀駮r建立約束。例如,約束可以在表格在數(shù)據(jù)庫系統(tǒng)中被初始創(chuàng)建時被定義并被存儲在DB2目錄中,它可以隨后由檢查實用程序來識別約束信息。
如在現(xiàn)有技術中公知的,為了執(zhí)行強制約束,一個常規(guī)檢查實用程序例如可以被初始化并標識可以被應用于表格中通過讀取DB2目錄來檢查的任何約束。然后,檢查實用程序例如將讀取數(shù)據(jù)庫表格的每一行,并檢查所謂的檢查約束違反和/或參照完整性約束違反。
如在現(xiàn)有技術中公知的,在檢查實用程序每次對一個表格進行操作之前生成一個例外表(例如生成一個新的例外表或每次執(zhí)行強制約束時替換一個先前的例外表)。例如,當一個用戶創(chuàng)建一個工作流以執(zhí)行檢查實用程序時,工作流的步驟包括創(chuàng)建一個新的例外表。例外表例如是數(shù)據(jù)庫的一個鏡像,除了例外表僅包含包括一個違反約束的行。例如,檢查實用程序?qū)⒄麄€行拷貝到例外表中。將一個錯誤行拷貝到例外表中的一個示例性SQL語句如下<pre listing-type="program-listing"><![CDATA[  INSERT INTO PDLNR.EXTDOCDPP4  VALUES (′SALE′   ,′2004-10-04′   ,′07.55.34′   ,0   ,33329   ,’V’   ,-.05   ,x’0000201′,CURRENT TIMESTAMP);]]></pre>如上述代碼所示,在數(shù)據(jù)庫表格PDLNR.TDOCDPP中包含一個違反約束的行將被復制到例外表PDLNR.EXTDOCDPP4中。
然而,在檢查實用程序使用一個例外表之前,必需創(chuàng)建例外表。而且,如果檢查實用程序先前已經(jīng)對一個表格進行操作,先前創(chuàng)建的例外表必需被刪除并創(chuàng)建一個新的例外表?,F(xiàn)有技術檢查實用程序執(zhí)行的關于例外表的創(chuàng)建和刪除的一個例子如下。例如,假設包括三個父表和三十一個從屬表的一個典型的用戶應用系統(tǒng)(父表和從屬表的其它組合也是可能的)。當客戶為從屬表執(zhí)行一個常規(guī)檢查實用程序時,每個從屬表僅需要一個例外表。如上所述并且是在現(xiàn)有技術中公知的,每個例外表例如是一個用于包含檢查實用程序標識為違反一個約束的行的工作表格。當為一個參考完整性約束違反檢查一個從屬表的表格空間時,常規(guī)檢查實用程序的用戶需要執(zhí)行下述步驟。
例如,對于每個從屬表格,用戶必需編碼和執(zhí)行下述示例性SQL語句。
<pre listing-type="program-listing"><![CDATA[  DROP TABLESPACE DBISIP.TSISIP01;  CREATE TABLESPACE TSISIP01   IN DBISIP   USING STOCROUP SGISIP   PRIQTY 52   SECQTY 26   ERASE NO   FREEPAGE 0   PCTFREEE 5   BUFFERPOOL BP0   LOCKSIZE ANY   CLOSE YESLOCKMAX SYSTEM   CCSID EBCDIC  CREATE TABLE PDISIP.TBHORDCT   LIKE PDUTL03.TBHORDCT   IN DBISIP.TSISP01;  ALTER TABLE PDISIP.TSISIP01   ADD RID CHAR(4);  ALTER TABLE PDISIP.TBHORDCT   ADD TIME TIMESTAMP NOT NULL WITH DEFAULT]]></pre>上述代碼描述例如刪除一個已有例外表(例如TSISIP01)和為每個將被檢查的從屬表創(chuàng)建一個新的例外表(例如TSISIP01)的步驟。另外,該代碼說明用于新創(chuàng)建例外表的檢查實用程序所需要的示例性修改(例如添加用于行標識的一個新列和用于時間標記的一個新列)。
因為上述例子具有三十一個從屬表格空間,上述代碼必需被寫入和執(zhí)行三十一次(例如每次用于一個從屬表格空間)。另外,檢查實用程序的用戶還必需編碼一個控制語句以運行檢查實用程序,控制語句命名所有的將被檢查的從屬表格空間并標識與從屬表格相關的所有例外表。為了這個目的,將由一個用戶編寫的示例性SQL語句被表示如下<pre listing-type="program-listing"><![CDATA[CHECK DATA TABLESPACE JTINLAND.SCHORDCT, TABLESPACE JTINLAND.SCHITMDI, TABLESpACE JTINLAND.SCHHDINF, TABLESPACE JTINLAND.SCHREFL2, TABLESPACE JTINLAND.SCHCMAIL, TABLESPACE JTINLAND.SCHBILDG, TABLESPACE JTINLAND.SCHFACFW, TABLESPACE JTINLAND.SCHEHRAC, TABLESPACE JTINLAND.SCHCOATI, TABLESPACE JTINLAND.SCHCTGCM, TABLESPACE JTINLAND.SCHSSTCK, TABLESPACE JTINLAND.SCHSRORD, TABLESPACE JTINLAND.SCPEPRCE, TABLESPACE JTINLAND.SQOMFGHD, TABLESPACE JTINLAND.SQOMFCHI, TABLESPACE JTINLAND.SQOMFCMT, TABLESPACE JTINLAND.SQOMFOVR, TABLESPACE JTINLAND SQOMFOVU, TABLESPACE JTINLAND.SQOMFMPL, TABLESPACE JTINLAND.SQOMFOVP, TABLESPACE JTINLAND SQOMFCHE, TABLESPACE JTINLAND.SQOMFUNT, TABLESPACE JTINLAND.SQOMFTRQ, TABLESPACE JTINLAND.SCHEITMR, TABLESPACE JTINLAND.SCHORDFW, TABLESPACE JTINLAND.SCHORHLD, TABLESPACE JTINLAND.SCHREFRL, TABLESPACE JTINLAND.SCHRETYP, TABLESPACE JTINLAND.SCPEPICS, TABLESPACE JTINLAND.SCHERCYL, TABLESPACE JTINLAND.SCHCACKW   FOR EXCEPTION IN PDUTL03.TBHORDCT USE PDISIP.TBHORDCT   FOR EXCEPTION IN PDUTL03.TBHITMDI USE PDISIP TBHITMDI   FOR EXCEPTION IN PDUTL03.TBHHDINF USE PDISIP.TBHMDINF   FOR EXCEPTION IN PDUTL03.TBHREFL2 USE PDISIP.TBHREFL2   FOR EXCEPTION IN PDUTL03.TBHCMAIL USE PDISIP.TBHCMAIL   FOR EXCEPTION IN PDUTL03.TBHBILDG USE PDISIP.TBHBILDGFOR EXCEPTION IN PDUTL03.TBHFACFW USE PDISIP.TBHFAcFW   FOR EXCEPTION IN PDUTL03.TBHEHRAC USE PDISIP.TBHEHRAC   FOR EXCEPTION IN PDUTL03.TBHCOATI USE PDISIP.TBHCOATI   FOR EXCEPTION IN PDUTL03.TBHCTGCM USE PDISIP.TBHCTGCM   FOR EXCEPTION IN PDUTL03.T~HSSTCK USE PDISIP.TBHSSTcK   FOR EXCEPTION IN PDUTL03.TBHSRORD USE PDISIP.TBHSRORD   FOR EXCEPTION IN PDUTL03.TBPEPRCE USE PDISIP.TBPEPRcE   FOR EXCEPTION IN PDUTL03.TQOMFGHD USE PDISIP.TQOMFGHD   FOR EXCEPTION IN PDUTL03.TQOMFCHI USE PDISIP.TQOMFCHI   FOR EXCEPTION IN PDUTL03.TQOMFCMT USE PDISIP.TQOMFCMT   FOR EXCEPTION IN PDUTL03 TQOMFOVR USE PDISIP.TQOMFOVR   FOR EXCEPTION IN PDUTL03.TQOMFOVU USE PDISIP.TQOMFOVU   FOR EXCEPTION IN PDUTL03.TQOMFMPL USE PDISIP.TQOMFMPL   FOR EXCEPTION IN PDUTL03.TQOMFOVP USE PDISIP.TQOMFOVP   FOR ExCEPTION IN PDUTL03.TQOMFCHE USE PDISIP.TQOMFCHE   FOR EXCEPTION IN PDUTL03.TQOMFUNT USE PDISIP.TQOMFUNT   FOR EXCEPTION IN PDUTL03.TQOMFTRQ USE PDISIP.TQOMFTRQ   FOR EXCEPTION IN PDUTL03.TBHEITMR USE PDISIP.TBHEITMR   FOR EXCEPTION IN PDUTL03.TBHORDFW USE PDISIP.TBHORDFW   FOR EXCEPTION IN PDUTL03.TBHORHLD USE PDISIP.TBHORHLD   FOR EXCEPTION IN PDUTL03.TBHREFRL USE PDISIP.TBHREFRL   FOR EXCEPTION IN PDUTL03.TBHRETYP USE PDISIP.TBHRETYP   FOR EXCEPTION IN PDUTL03.TBPEPICS USE PDISIP.TBPEPICS   FOR EXCEPTION IN PDUTL03.TBHERCYL USE PDISIP.TBHERCYL   FOR EXCEPTION IN DUTL03.TBHCACKW USE PDISIP.TBHCACKW]]></pre>如上述控制語句所示,每個從屬表格空間被標識(例如“TABLESPACE JTINLAND.SCHORDCT”表示數(shù)據(jù)庫JTINLAND所擁有的從屬表格SCHORDCT)。在標識三十一個從屬表格之后,將用于每個獨立表格的例外表被標識(例如“FOR EXCEPTION INPDUTL03.TBHORDCT USE PDISIP.TBHORDCT”表示例外表TBHORDCT將用于從屬表格TBHORDCT)。
如上面的為常規(guī)檢查實用程序執(zhí)行約束限制的操作必需被編寫和執(zhí)行的示例性代碼所表示的,用戶必需消耗大量的精力來諸如刪除檢查實用程序在先前操作中創(chuàng)建的例外表的表格空間和創(chuàng)建新的例外表的表格空間。
因為數(shù)據(jù)庫經(jīng)常具有大量的從屬表,用戶必需定期地對這些表格和所有從屬表格執(zhí)行參考整體檢查。這一處理可能很長,并繁雜地涉及許多步驟和大量的手寫編碼SQL命令以表示將被檢查的表格,創(chuàng)建例外表和將例外表指定給參照完整性檢查實用程序。這個處理不僅消耗時間,而且容易出錯。因此,希望以自動的方式簡化與從屬表格參照完整性檢查相關的工作。
圖2圖示根據(jù)本發(fā)明一個實施例用于為一個檢查實用程序根據(jù)維護例外表的另一個示例性流程圖。
本發(fā)明的詳細說明

圖1圖示根據(jù)本發(fā)明一個實施例的用于為一個檢查實用程序根據(jù)維護例外表的一個示例性流程圖。如圖1所示,在步驟1010,讀取一個控制語句,標識執(zhí)行指定表格空間上的約束限制所需的參數(shù)。在步驟1020,由例如根據(jù)本發(fā)明的一個實施例修改的一個常規(guī)檢查實用程序處理該控制語句。在步驟1030,生成刪除或創(chuàng)建例外表所需的SQL語句。在步驟1040,執(zhí)行在步驟1030中生成的SQL語句。
下面所述的是根據(jù)本發(fā)明一個實施例的一個示例性SQL控制語句。例如,這個控制語句可以在圖1所示的步驟1010中由檢查實用程序的一個用戶生成。然后,根據(jù)本發(fā)明的一個實施例,該控制語句將被提供給一個常規(guī)檢查實用程序進行處理。
<pre listing-type="program-listing"><![CDATA[CHECK DATA TABLESPACE JTINLAND.SCHORDCT, TABLESPACE JTINLAND.SCHITMDI, TABLESPACE JTINLAND.SCHHDINF, TABLESPACE JTINLAND.SCHREFL2, TABLESPACE JTINLAND.SCHCMAIL, TABLESPACE JTINLAND.SCHBILDG, TABLESPACE JTINLAND.SCHFACFW, TABLESPACE JTINLAND.SCHEHRAC, TABLESPACE JTINLAND.SCHCOATI, TABLESPACE JTINLAND.SCHCTGCM, TABLESPACE JTINLAND.SCHSSTCK, TABLESPACE JTINLAND.SCHSRORD, TABLESPACE JTINLAND.SCPEPRCE, TABLESPACE JTINLAND.SQOMFGHD, TABLESPACE JTINLAND.SQOMFCHI, TABLESPACE JTINLAND.SQOMFCMT, TABLESPACE JTINLAND.SQOMFOVR, TABLESPACE JTINLAND SQOMFOVU, TABLESPACE JTINLAND.SQOMFMPL, TABLESPACE JTINLAND.SQOMFOVP, TABLESPACE JTINLAND SQOMFCHE, TABLESPACE JTINLAND.SQOMFUNT, TABLESPACE JTINLAND.SQOMFTRQ, TABLESPACE JTINLAND.SCHEITMR, TABLESPACE JTINLAND.SCHORDFW, TABLESPACE JTINLAND.SCHORHLD, TABLESPACE JTINLAND.SCHREFRL, TABLESPACE JTINLAND.SCHRETYP, TABLESPACE JTINLAND.SCPEPICS, TABLESPACE JTINLAND.SCHERCYL, TABLESPACE JTINLAND.SCHCACKW   USING   DATABASE DBISIP   TABLESPACE TSISIP   STOGROUP SGISIP   PRIQTY 52   SECQTY 26   OWNER PDISIP   DROPYES]]></pre>如在上述示例性SQL控制語句中表示的,根據(jù)本發(fā)明的一個實施例,在語句USING之后控制語句包含由常規(guī)檢查實用程序處理的多個關鍵字??刂普Z句的格式是設計選擇的問題,只要該格式可以由檢查實用程序來處理(例如分析)。然而,在關鍵字之前,將被檢查的從屬表格空間的名稱由用戶提供,根據(jù)該名稱可以確定將被檢查的從屬表格。例如,如在現(xiàn)有技術中公知的,檢查實用程序例如通過讀取數(shù)據(jù)庫的DB2目錄可以識別在每個從屬表格空間中從屬表格的名稱。在由本申請的代理人代理的序列號No.09/151,750,標題為“強制約束最佳處理的動態(tài)確定(DYNAMIC DETERMINATION OFOPTIMAL PROCESS FOR ENFORCING CONSTRAINTS)”的待審專利申請中包含有如何讀取DB2目錄的說明,在此引用作為參考。
在本發(fā)明的另一實施例中,并不提供將被檢查的所有從屬表格空間的名稱,可以在控制語句中提供父表格空間的名稱。使用這個信息,DB2目錄可以被讀取以識別相關從屬表格空間,從而不需要用戶手工地標識從屬表格空間。例如,僅標識父表格空間的控制語句可以具有任何格式或語法,如果該格式或語法可以由適當?shù)膶嶓w來解釋和處理,例如檢查實用程序或可以訪問一個DB2目錄的其它DB2實用程序。
根據(jù)本發(fā)明一個實施例的示例性SQL控制語句包括用于預定例外表格參數(shù)的關鍵詞。例如,一個關鍵詞是將被創(chuàng)建的表格空間中數(shù)據(jù)庫的名稱(例如用于新創(chuàng)建表格空間的邏輯分組的數(shù)據(jù)庫名稱)。在這個例子中,數(shù)據(jù)庫的名稱是DBISIP。另一個關鍵詞是將被創(chuàng)建的例外表格空間名稱,例如TSISIP(它在數(shù)據(jù)庫DBISIP中)。如果需要多個例外表格空間,根據(jù)本發(fā)明一個實施例的方法可以創(chuàng)建它們,例如使用相同數(shù)據(jù)庫名稱的連續(xù)編號的表格空間(例如TSISIP01、TSISIP02等)。關鍵詞還包括在本技術領域中公知的一個存儲組標識符(例如例外表格空間將駐留的位置)。在這個例子中STOGROUP被命名為SGISIP。
根據(jù)本發(fā)明一個實施例的關鍵詞還包括例如將在存儲組中被使用的第一數(shù)量的DASD和第二數(shù)量的DASD(例如將由DB2為例外表格空間分配的DASD頁面)。如在現(xiàn)有技術中公知的,第一數(shù)量和第二數(shù)量的DASD例如可以由用戶指定,例如根據(jù)將由檢查實用程序識別的錯誤數(shù)的估計值。在這個例子中,為存儲組分配DASD的52個頁面,如果需要的話其它26個頁面也是可用的。
如在控制語句中表示的,在這個PDISIP的情況下,關鍵詞還可以標識將被創(chuàng)建的例外表的所有者。根據(jù)本發(fā)明的一個實施例,這個所有者例如將在響應于控制語句由檢查實用程序生成的創(chuàng)建表格SQL語句中使用。例外,關鍵詞包括一個刪除語句以表示在創(chuàng)建一個新的例外表之前是否要刪除現(xiàn)有的例外表或現(xiàn)有的例外表是否要被重新使用。根據(jù)本發(fā)明的一個示例性實施例,新創(chuàng)建的例外表被指定一個由用戶提供的所有者并具有與被檢查的相應從屬表相同的名稱(例如它具有一個不同的所有者名稱)。
根據(jù)本發(fā)明一個示范性實施例的常規(guī)檢查實用程序生成和刪除例外表的一個示范性處理被用下述偽碼來表示并示于圖2中。
<pre listing-type="program-listing"><![CDATA[PARSE CONTROL STATEMENT IF KEYWORD=USINGIF KEYWORD=USING   IF DROP=YES   DROP TABLESPACES   ENDIF   CREATE TABLESPACE   CREATE TABLE   ALTER TABLE TWICE   SET FLAG EXCEPTION_TABLE   SETFLAGDROP_IF_EMPTYELSEIFKEYWORD=EXCEPTION IN   SET FLAG EXCEPTION_TABLEENDIFPERFORM CHECK DATA PROCESSIF NO_VIOLATIONS   IF DROP_IF_EMPTY   DROP TABLESPACES   ENDIFENDIF]]></pre>
圖2表示根據(jù)本發(fā)明一個實施例的用于為一個檢查實用程序維護例外表的另一個示例性流程圖。在步驟2010,由常規(guī)檢查實用程序接收一個控制語句。例如根據(jù)本發(fā)明的一個示例性實施例,控制語句將包括預定例外表參數(shù),如上所述,由檢查實用程序來分析。在步驟2020,所接收的控制語句被分析并確定將一個刪除(DROP)參數(shù)設置為例如是或非。如果該值為非,來自一個先前檢查操作的現(xiàn)有例外表格空間將被用于當前的檢查操作。如果刪除值為是,則在步驟2030將刪除現(xiàn)有的例外表格空間。
在步驟2030之后,在步驟2040由檢查實用程序使用例如從所分析的控制語句獲得的表格空間名稱建立一個創(chuàng)建表格空間SQL語句(例如建立一個數(shù)據(jù)結(jié)構(gòu))。在步驟2050,生成例外表格空間,例如通過執(zhí)行創(chuàng)建表格空間SQL語句,(例如一部分DASD被分配給例外表格空間)。在步驟2060,確定例外表格空間先前是否存在。例如,DB2表示(例如通過一個SQL代碼)一個新的例外表格空間是否被創(chuàng)建(例如,SQL語句的執(zhí)行是否成功),或者它是否不能被創(chuàng)建,例如因為表格空間已經(jīng)存在。如果先前存在例外表格空間,該程序前進到步驟2090,如下所述。如果先前例外表格空間并不存在,則該程序前進到步驟2070。在步驟2070,建立和執(zhí)行一個創(chuàng)建表格SQL語句以創(chuàng)建例外表。在步驟2080,建立和執(zhí)行任何需要的變更SQL語句,例如將行標識或時間標記添加給例外表。
在步驟2090,確定是否有另外一個從屬表格要檢查。如果不再有要檢查的表格,該程序在步驟2100上結(jié)束。如果有要檢查的另一個表格,該程序返回步驟2020直到所有被標識的表格已經(jīng)被檢查。與處理例外表的常規(guī)檢查實用程序相反,常規(guī)檢查實用程序要求由檢查實用程序的用戶標識所有的例外表,根據(jù)本發(fā)明從屬表被自動地標識并生成相應的例外表,因而避免在標識所有所需的例外表中潛在的錯誤或遺漏。
因此,根據(jù)本發(fā)明的一個實施例,上述處理可以由常規(guī)檢查實用程序來執(zhí)行(例如該方法可以被提供為檢查實用程序軟件中的一個軟件算法)以創(chuàng)建和刪除例外表。例如,使用本發(fā)明的方法,將三個父表和指定關鍵詞包含在控制語句中將導致生成強制約束所需要的三十一個例外表表格空間所需要的SQL語句的自動生成和執(zhí)行。因而,根據(jù)本發(fā)明的一個實施例,與約束檢查的常規(guī)處理所需要的工作相比,一個檢查實用程序的用戶可以執(zhí)行更少的工作以生成參照完整性強制約束所需要的例外表。
權(quán)利要求
1.一種用于維護例外表的方法,包括步驟生成包括預定例外表參數(shù)的控制語句;在一個檢查實用程序中接收控制語句;為每個預定例外表參數(shù)生成SQL語句;和執(zhí)行每個SQL語句,其中以執(zhí)行至少一個SQL語句的功能來執(zhí)行例外表的生成或刪除。
2.一種在數(shù)據(jù)庫系統(tǒng)中維護例外表的方法,包括步驟接收控制語句,該控制語句包括至少一個預定例外表參數(shù);分析該控制語句;作為所分析控制語句的功能,為至少一個例外表參數(shù)生成SQL語句;和執(zhí)行該SQL語句。
3.根據(jù)權(quán)利要求2的方法,其中至少一個預定例外表參數(shù)包括數(shù)據(jù)庫名稱、例外表格空間名稱、存儲組名稱、第一數(shù)量值、第二數(shù)量值、所有者名稱和刪除值之一。
4.根據(jù)權(quán)利要求3的方法,其中控制語句包括多個例外表參數(shù)。
5.根據(jù)權(quán)利要求2的方法,其中分析控制語句由一個常規(guī)檢查實用程序來執(zhí)行。
6.根據(jù)權(quán)利要求2的方法,其中所述生成SQL語句的步驟包括生成用于多個例外表參數(shù)的SQL語句。
全文摘要
一種用于檢查實用程序維護例外表的方法,包括生成一個控制語句,該語句中包括關鍵詞和用于預定例外表參數(shù)的相關值。該控制語句由檢查實用程序來分析,該檢查實用程序自動地建立和執(zhí)行創(chuàng)建和刪除例外表所需要的SQL語句。
文檔編號G06F12/00GK1324465SQ99812655
公開日2001年11月28日 申請日期1999年10月27日 優(yōu)先權(quán)日1998年10月27日
發(fā)明者小阿曼多B·伊西普 申請人:聯(lián)合想象計算機公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1