一種生成序列號的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種生成序列號的方法及裝置。
【背景技術(shù)】
[0002]在信息化社會,充分有效地管理和利用各類信息資源,是進(jìn)行科學(xué)研宄和決策管理的前提條件。數(shù)據(jù)庫技術(shù)是管理信息系統(tǒng)、辦公自動化系統(tǒng)、決策支持系統(tǒng)等各類信息系統(tǒng)的核心部分,是進(jìn)行科學(xué)研宄和決策管理的重要技術(shù)手段。數(shù)據(jù)庫為了更好地為上述的功能提供支撐,需將大量的數(shù)據(jù)保存于數(shù)據(jù)庫的表中。
[0003]目前使用較普遍的數(shù)據(jù)庫,如MySQL,缺少獲取序列的途徑,當(dāng)在數(shù)據(jù)庫的表中插入數(shù)據(jù)時,無法知道插入的數(shù)據(jù)的序列號。故急需一種獲知數(shù)據(jù)序列號的方法及裝置,能在數(shù)據(jù)庫插入數(shù)據(jù)時,獲知該插入數(shù)據(jù)對應(yīng)的序列號,使每個數(shù)據(jù)具有唯一的標(biāo)識一一序列號。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種生成序列號的方法及裝置,用以在數(shù)據(jù)庫插入數(shù)據(jù)時,獲知該插入數(shù)據(jù)對應(yīng)的序列號,達(dá)到使每個數(shù)據(jù)具有唯一的標(biāo)識一一序列號的目的。
[0005]本發(fā)明提供一種生成序列號的方法,包括:
[0006]根據(jù)當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表的標(biāo)識,從預(yù)先設(shè)置的序列表中獲取所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值、步長和上一次分配的序列號;
[0007]根據(jù)所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值、步長和上一次分配的序列號生成當(dāng)前數(shù)據(jù)的序列號;
[0008]將當(dāng)前數(shù)據(jù)和當(dāng)前數(shù)據(jù)的序列號存入所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表中;
[0009]其中,當(dāng)有新的數(shù)據(jù)表出現(xiàn)時,所述序列表記錄所述新的數(shù)據(jù)表的標(biāo)識及其對應(yīng)的序列號初始值和步長。
[0010]本發(fā)明實施例的一些有益效果可以包括:
[0011]通過在數(shù)據(jù)庫中新建一個序列表,該表用于記錄數(shù)據(jù)庫中其他表的序列,包括了其他表的序列號初始值、步長和上一次分配的序列號,故能在數(shù)據(jù)庫插入數(shù)據(jù)時,根據(jù)數(shù)據(jù)要存入的數(shù)據(jù)表,即可從序列表中獲取數(shù)據(jù)要存入的數(shù)據(jù)表序列的初始值、步長和上一次分配的序列號,根據(jù)這些信息,繼可以完成獲知該插入數(shù)據(jù)對應(yīng)的序列號,達(dá)到使每個數(shù)據(jù)具有唯一的標(biāo)識序列號的目的。
[0012]在一個實施例中,所述根據(jù)所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值、步長和上一次分配的序列號生成當(dāng)前數(shù)據(jù)的序列號,包括:
[0013]S1:判斷所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表是否是第一次輸入數(shù)據(jù),是則執(zhí)行S2,否則執(zhí)行S3 ;
[0014]S2:將所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值作為當(dāng)前數(shù)據(jù)的序列號,并將所述當(dāng)前數(shù)據(jù)的序列號作為所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號記錄在所述序列表中;
[0015]S3:將所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號加上步長得到的值作為當(dāng)前數(shù)據(jù)的序列號,并更新所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號為當(dāng)前數(shù)據(jù)的序列號。
[0016]在該實施例中,不管當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號存在與否,都可以完成生成當(dāng)前數(shù)據(jù)對應(yīng)的序列號的工作。
[0017]在一個實施例中,所述序列表中記錄的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的步長為正數(shù)時,所述序列表還記錄有該數(shù)據(jù)表對應(yīng)的序列號最大值;
[0018]所述步驟SI判斷結(jié)果為否之后,執(zhí)行步驟S3之前,還包括:判斷所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號加上步長得到的值是否小于或等于該數(shù)據(jù)表對應(yīng)的序列號最大值,是則執(zhí)行S3,否則生成當(dāng)前數(shù)據(jù)的序列號失敗,結(jié)束流程。
[0019]在該實施例中,用戶可以將數(shù)據(jù)表對應(yīng)的步長設(shè)置為正數(shù),同時可以設(shè)置數(shù)據(jù)表對應(yīng)的序列號最大值,從而生成序列號將不會大于數(shù)據(jù)表對應(yīng)的序列號最大值,防止數(shù)據(jù)的溢出。
[0020]在一個實施例中,當(dāng)所述序列表中記錄的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的步長為負(fù)數(shù)時,所述序列表還記錄有該數(shù)據(jù)表對應(yīng)的序列號最小值;
[0021]所述步驟SI判斷結(jié)果為否之后,執(zhí)行步驟S3之前,還包括:判斷所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號加上步長得到的值是否大于或等于該數(shù)據(jù)表對應(yīng)的序列號最小值,是則執(zhí)行S3,否則生成當(dāng)前數(shù)據(jù)的序列號失敗,結(jié)束流程。
[0022]在該實施例中,用戶可以將數(shù)據(jù)表對應(yīng)的步長設(shè)置為負(fù)數(shù),同時可以設(shè)置數(shù)據(jù)表對應(yīng)的序列號最小值,從而生成序列號將不會小于數(shù)據(jù)表對應(yīng)的序列號最小值,防止數(shù)據(jù)的溢出。
[0023]本發(fā)明還提供一種生成序列號的裝置,包括:獲取模塊,序列號生成模塊,保存模塊;
[0024]所述獲取模塊,用于根據(jù)當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表的標(biāo)識,從自身存儲的預(yù)先設(shè)置的序列表中,獲取所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值、步長和上一次分配的序列號并發(fā)送給所述序列號生成模塊;當(dāng)有新的數(shù)據(jù)表出現(xiàn)時,所述獲取模塊將新的數(shù)據(jù)表的標(biāo)識及其對應(yīng)的序列號初始值和步長記錄至所述序列表中;
[0025]所述序列號生成模塊,用于根據(jù)所述獲取模塊發(fā)來的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值、步長和上一次分配的序列號,生成當(dāng)前數(shù)據(jù)的序列號并發(fā)送給所述保存t吳塊;
[0026]所述保存模塊,用于接收所述序列號生成模塊發(fā)來的所述當(dāng)前數(shù)據(jù)的序列號,將當(dāng)前數(shù)據(jù)和所述當(dāng)前數(shù)據(jù)的序列號存入所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表中。
[0027]在一個實施例中,所述序列號生成模塊包括:第一判斷模塊、第一更新模塊、第二更新t吳塊;
[0028]所述第一判斷模塊,用于判斷所述獲取模塊發(fā)來的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表是否是第一次輸入數(shù)據(jù),是則向所述第一更新模塊發(fā)送第一更新指令,否則向所述第二更新模塊發(fā)送第二更新指令
[0029]所述第一更新模塊,用于根據(jù)所述第一判斷模塊發(fā)來的第一更新指令,將所述獲取模塊發(fā)來的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的序列號初始值作為當(dāng)前數(shù)據(jù)的序列號,并將當(dāng)前數(shù)據(jù)的序列號作為所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號記錄在所述序列表中;
[0030]所述第二更新模塊,用于根據(jù)所述第一判斷模塊發(fā)來的第二更新指令,將所述獲取模塊發(fā)來的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號加上步長得到的值作為當(dāng)前數(shù)據(jù)的序列號,并更新所述序列表中記錄的當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的上一次分配的序列號為當(dāng)前數(shù)據(jù)的序列號。
[0031]在一個實施例中,所述獲取模塊存儲的序列表中記錄的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的步長為正數(shù)時,所述序列表還記錄有該數(shù)據(jù)表對應(yīng)的序列號最大值;所述獲取模塊存儲的序列表中記錄的所述當(dāng)前數(shù)據(jù)要存入的數(shù)據(jù)表對應(yīng)的步長為負(fù)數(shù)時,所述序列表還記錄有該數(shù)據(jù)表對應(yīng)的序列號最小值;
[0032]所述第二更新模塊包括:
[0033]第二判斷模塊,用于根據(jù)所述第一判