業(yè)務(wù)表的處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫(kù)技術(shù),尤其涉及一種業(yè)務(wù)表的處理方法及裝置。
【背景技術(shù)】
[0002] 在現(xiàn)有技術(shù)中,數(shù)據(jù)庫(kù)提供了生成數(shù)字序列的兩種方法,其中一種方法是定義帶 有標(biāo)識(shí)(Identity)屬性的列,簡(jiǎn)稱Identity列,當(dāng)用Identity列定義業(yè)務(wù)表,且在每業(yè)務(wù) 表中插入一行時(shí),就會(huì)自動(dòng)為該業(yè)務(wù)表的Identity列生成一個(gè)數(shù)值;另一方法是創(chuàng)建序列 (sequence)對(duì)象,可W使用序列表達(dá)式(sequence expression)來(lái)引用序列對(duì)象,可W為業(yè) 務(wù)表中的行自動(dòng)生成序列號(hào),該序列號(hào)是一組等間隔的數(shù)值(數(shù)字序列)。
[0003] 但是,Identity與sequence的最大不同在于;Identity僅僅是指定在業(yè)務(wù)表中 某一列上,作用范圍只能在一個(gè)業(yè)務(wù)表中,多個(gè)業(yè)務(wù)表不可W共享Identity ;而sequence 可W通過(guò)命名方式在同一個(gè)數(shù)據(jù)庫(kù)內(nèi)部的多個(gè)業(yè)務(wù)表中共享序列號(hào)發(fā)生器,可W在整個(gè)數(shù) 據(jù)庫(kù)中使用。但是,現(xiàn)有技術(shù)中,有的數(shù)據(jù)庫(kù)支持sequence,有的不支持sequence,比如 Oracle、DB2、PostgreS化數(shù)據(jù)庫(kù)支持 sequence ;而 MySQL、S化 Server、Sybase 等數(shù)據(jù)庫(kù)不 支持 sequence。
[0004] 在一些特殊情況下,當(dāng)一個(gè)數(shù)據(jù)庫(kù)不支持sequence,且該數(shù)據(jù)庫(kù)內(nèi)部具有多個(gè)業(yè) 務(wù)表時(shí),采用Identity只能為該數(shù)據(jù)庫(kù)中一個(gè)業(yè)務(wù)表生成唯一標(biāo)識(shí)的數(shù)字序列,但是不能 為多個(gè)業(yè)務(wù)表生成唯一標(biāo)識(shí)的數(shù)字序列,因此,現(xiàn)有數(shù)據(jù)庫(kù)提供的數(shù)字序列生成方法中存 在應(yīng)用局限性。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明提供一種業(yè)務(wù)表的處理方法及裝置,能夠適用于任何數(shù)據(jù)庫(kù),可W解決現(xiàn) 有數(shù)據(jù)庫(kù)提供的數(shù)字序列生成方法中存在的應(yīng)用局限性問(wèn)題。
[0006] 本發(fā)明提供一種業(yè)務(wù)表的處理方法,包括:
[0007] 當(dāng)數(shù)據(jù)庫(kù)中任一個(gè)業(yè)務(wù)表的數(shù)據(jù)內(nèi)容列中增加或減少一行數(shù)據(jù)內(nèi)容時(shí),獲取數(shù)據(jù) 內(nèi)容列發(fā)生變化的所述待處理業(yè)務(wù)表的名稱;
[0008] 根據(jù)所述待處理業(yè)務(wù)表的名稱,查詢與所述待處理業(yè)務(wù)表的名稱對(duì)應(yīng)的序列表, 獲取所述序列表中包括的當(dāng)前序列值和步長(zhǎng),所述步長(zhǎng)為預(yù)設(shè)的表示所述序列表中序列值 變化規(guī)律的值;
[0009] 將獲取的所述當(dāng)前序列值與所述步長(zhǎng)相加或相減,并將相加或相減后的序列值插 入到所述待處理業(yè)務(wù)表的標(biāo)識(shí)屬性列中、且所述相加或相減后的序列值與所述增加或減少 的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0010] 本發(fā)明提供一種業(yè)務(wù)表的處理裝置,包括:
[0011] 獲取模塊,用于當(dāng)數(shù)據(jù)庫(kù)中任一個(gè)業(yè)務(wù)表的數(shù)據(jù)內(nèi)容列中增加或減少一行數(shù)據(jù)內(nèi) 容時(shí),獲取數(shù)據(jù)內(nèi)容列發(fā)生變化的所述待處理業(yè)務(wù)表的名稱;
[0012] 查詢模塊,用于根據(jù)所述待處理業(yè)務(wù)表的名稱,查詢與所述待處理業(yè)務(wù)表的名稱 對(duì)應(yīng)的序列表;
[0013] 所述獲取模塊,還用于獲取所述序列表中包括的當(dāng)前序列值和步長(zhǎng),所述步長(zhǎng)為 預(yù)設(shè)的表示所述序列表中序列值變化規(guī)律的值;
[0014] 插入模塊,用于將獲取的所述當(dāng)前序列值與所述步長(zhǎng)相加或相減,并將相加或相 減后的序列值插入到所述待處理業(yè)務(wù)表的標(biāo)識(shí)屬性列中、且所述相加或相減后的序列值與 所述增加或減少的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0015] 本發(fā)明實(shí)施例中,當(dāng)數(shù)據(jù)庫(kù)中任一個(gè)業(yè)務(wù)表的數(shù)據(jù)內(nèi)容列中增加或減少一行數(shù)據(jù) 內(nèi)容時(shí),獲取數(shù)據(jù)內(nèi)容列發(fā)生變化的所述業(yè)務(wù)表的名稱;根據(jù)所述業(yè)務(wù)表的名稱,查詢與所 述業(yè)務(wù)表的名稱對(duì)應(yīng)的序列表,獲取所述序列表中包括的當(dāng)前序列值和步長(zhǎng),所述步長(zhǎng)為 預(yù)設(shè)的表示所述序列表中序列值變化規(guī)律的值;將獲取的所述當(dāng)前序列值與所述步長(zhǎng)相加 或相減,并將相加或相減后的序列值插入到所述業(yè)務(wù)表的標(biāo)識(shí)屬性列中、且與所述增加或 減少的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0016] 由于本發(fā)明中的序列表是與數(shù)據(jù)庫(kù)中業(yè)務(wù)表的名稱對(duì)應(yīng),因此可W適用于具有多 個(gè)業(yè)務(wù)表的數(shù)據(jù)庫(kù)中;進(jìn)一步地,由于本發(fā)明中的序列表中的當(dāng)前序列值是與業(yè)務(wù)表中的 標(biāo)識(shí)屬性列中的標(biāo)識(shí)屬性值相對(duì)應(yīng),即使數(shù)據(jù)庫(kù)不支持序列,但是數(shù)據(jù)庫(kù)中的業(yè)務(wù)表的標(biāo) 識(shí)屬性列是支持序列的,因此,也就是能夠適用于任何數(shù)據(jù)庫(kù),從而解決了現(xiàn)有數(shù)據(jù)庫(kù)提供 的數(shù)字序列生成方法中存在的應(yīng)用局限性問(wèn)題。
【附圖說(shuō)明】
[0017] 圖1是本發(fā)明實(shí)施例提供的業(yè)務(wù)表的處理方法的流程示意圖;
[0018] 圖2是本發(fā)明實(shí)施例提供的業(yè)務(wù)表的處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0019] 圖1是本發(fā)明實(shí)施例提供的業(yè)務(wù)表的處理方法的流程示意圖。本實(shí)施例中的方法 可W應(yīng)用于任意數(shù)據(jù)庫(kù)中。如圖1所示,本實(shí)施例提供的方法包括:
[0020] 101、當(dāng)數(shù)據(jù)庫(kù)中任一個(gè)業(yè)務(wù)表的數(shù)據(jù)內(nèi)容列中增加或減少一行數(shù)據(jù)內(nèi)容時(shí),獲取 數(shù)據(jù)內(nèi)容列發(fā)生變化的所述待處理的業(yè)務(wù)表的名稱;
[0021] 本實(shí)施例的數(shù)據(jù)庫(kù)中包括多個(gè)業(yè)務(wù)表,且為每個(gè)業(yè)務(wù)表都定義了對(duì)應(yīng)的名稱W及 與每個(gè)業(yè)務(wù)表名稱對(duì)應(yīng)的序列表,本實(shí)施例中,還為每個(gè)序列表定義了初始序列值和步長(zhǎng), 其中,所述步長(zhǎng)為預(yù)設(shè)的表示所述序列表中序列值變化規(guī)律的值。其中,初始序列值例如可 W為0或1。
[0022] 假設(shè)數(shù)據(jù)庫(kù)中包括多個(gè)學(xué)生信息表,其中,學(xué)生信息表的名稱例如可W定義為學(xué) 生信息或者其他名稱,該學(xué)生信息表中包括學(xué)生姓名列和學(xué)號(hào)列,其中,學(xué)生姓名列相當(dāng)于 本發(fā)明中所述的數(shù)據(jù)內(nèi)容列,學(xué)號(hào)列相當(dāng)于標(biāo)識(shí)屬性列,其中,學(xué)生姓名列中的每個(gè)學(xué)生姓 名與學(xué)號(hào)列中的學(xué)號(hào)一一對(duì)應(yīng)。
[0023]
[0024] 102、根據(jù)所述待處理的業(yè)務(wù)表的名稱,查詢與所述待處理的業(yè)務(wù)表的名稱對(duì)應(yīng)的 序列表,獲取所述序列表中包括的當(dāng)前序列值和步長(zhǎng);
[0025] W上述學(xué)生信息表為例,與學(xué)生信息對(duì)應(yīng)的序列表中的初始序列值例如為0,每增 加一名學(xué)生,學(xué)號(hào)加一,則定義的步長(zhǎng)為1,當(dāng)學(xué)生信息表中包括0個(gè)學(xué)生時(shí),則序列表中包 括的當(dāng)前序列值為初始序列值0。
[0026] 103、將獲取的所述當(dāng)前序列值與所述步長(zhǎng)相加或相減,并將相加或相減后的序列 值插入到所述待處理的業(yè)務(wù)表的標(biāo)識(shí)屬性列中、且所述相加或相減后的序列值與所述增加 或減少的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0027] W上述學(xué)生信息表為例,當(dāng)學(xué)生信息表中從0個(gè)學(xué)生增加 1個(gè)學(xué)生時(shí),將當(dāng)前序列 值0與步長(zhǎng)1相加,即為該增加的學(xué)生的學(xué)號(hào)1,也就是說(shuō)將相加后的序列值1插入到所述 業(yè)務(wù)表的標(biāo)識(shí)屬性列中、且所述相加的序列值與所述增加的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所 對(duì)應(yīng)。
[0028]
[002引當(dāng)學(xué)生信息表中從1個(gè)學(xué)生增加2個(gè)學(xué)生時(shí),將當(dāng)前序列值1與步長(zhǎng)1相加,即為 該增加的學(xué)生的學(xué)號(hào)2,也就是說(shuō)將相加后的序列值2插入到所述業(yè)務(wù)表的標(biāo)識(shí)屬性列中、 且所述相加后的序列值與所述增加的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0030]
[00引]當(dāng)學(xué)生信息表中從N個(gè)學(xué)生減少1個(gè)學(xué)生時(shí),將當(dāng)前序列值N與步長(zhǎng)1相減,即為 減少后的學(xué)生的學(xué)號(hào)N-1,也就是說(shuō)將減少后的序列值N-1插入到所述業(yè)務(wù)表的標(biāo)識(shí)屬性 列中、且所述相減后的序列值與所述減少的一行數(shù)據(jù)內(nèi)容的標(biāo)識(shí)屬性項(xiàng)所對(duì)應(yīng)。
[0032]
[0033] 舉例來(lái)說(shuō),本實(shí)施例的序列表如下表所示:
[0034]
[0035]
[0036] 本實(shí)施例中,當(dāng)數(shù)據(jù)庫(kù)中任一個(gè)業(yè)務(wù)表的數(shù)據(jù)內(nèi)容列中增加或減少一行數(shù)據(jù)內(nèi)容 時(shí),獲取數(shù)據(jù)內(nèi)容列發(fā)生變化的所述業(yè)務(wù)表的名稱,查詢與所述業(yè)務(wù)表的名稱對(duì)應(yīng)的序列 表,獲取所述序列表中包括的當(dāng)前序列值和步長(zhǎng),將獲取的所述當(dāng)前序列值與所述步長(zhǎng)相 加或相減,并將所述序列表中的當(dāng)前序列值更新為所述當(dāng)前序列值與所述步長(zhǎng)相加或相減 后的序列值。
[0037] 舉例來(lái)說(shuō),建立序列表的過(guò)程可W為:
[0038] CREATE TABLE' SEQUENCE' (
[0039] ' name- varchar (45) NOT N化L COMMENT'
[0040] 業(yè)務(wù)表名稱(數(shù)