久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何屏蔽數據庫中自增ID功能

158次閱讀
沒有評論

共計 1597 個字符,預計需要花費 4 分鐘才能閱讀完成。

今天就跟大家聊聊有關如何屏蔽數據庫中自增 ID 功能,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

在平時的項目開發中,我相信有很大一批人都在用這個數據庫自增 ID,用數據庫自增 ID 有利也有弊。平時在開發項目的時候,一般都沒有用到數據庫的自增 ID。下面丸趣 TV 丸趣 TV 小編來講解下如何屏蔽數據庫中自增 ID 功能?

如何屏蔽數據庫中自增 ID 功能

解決思路

1: 定義一張表,專門用來存放存所有需要唯一 ID 的表名稱以及該表當前所使用到的 ID 值。

2: 寫一個存儲過程,專門用來在上一步的表中取 ID 值。

這個思路非常簡單,我不作解釋了,直接來看看我的實現方法:

第一步:創建表

createtabletable_key(table_namevarchar(50)notnullprimarykey,key_valueintnotnull)

第二步:創建存儲過程來取自增 ID

createprocedureup_get_table_key(@table_namevarchar(50),@key_valueintoutput)asbeginbegintrandeclare@keyint–initializethekeywith2set@key=1–whetherthespecifiedtableisexistifnotexists(selecttable_namefromtable_keywheretable_name=@table_name)begininsertintotable_keyvalues(@table_name,@key)–defaultkeyvlaue:1end–stepincreaseelsebeginselect@key=key_valuefromtable_keywith(nolock)wheretable_name=@table_nameset@key=@key+1–updatethekeyvaluebytablenameupdatetable_keysetkey_value=@keywheretable_name=@table_nameend–setouputvalueset@key_value=@key–committrancommittranif@@error 0rollbacktranend

對于在表中不存在記錄,直接返回一個默認值為 1 的鍵值,同時插入該條記錄到 table_key 表中。而對于已存在的記錄,key 值直接在原來的 key 基礎上加 1.

如何屏蔽數據庫中自增 ID 功能

總結一下,這種方法非常簡單,我說一下它的優缺點。

優點:

1:ID 值是可控的。用戶可以從指定段開始分配 ID 值,這對于在分布式數據要求同數據同步時,非常方便,很好地解決了 ID 重復的問題。

2:在編寫程序中,ID 值是可見的,比如在再插入關聯的記錄時,相比使用數據庫自增 ID 的情況下,這種方法不需要在插入一條數據庫記錄之后,再去得到自增 ID 值,然再再使用該 ID 的值來插入關聯的記錄。我們可以一次性使用事務來插入關聯記錄。

3:對于需要批量插入數據時,我們可以改寫一下上面的存儲過程,返回一個段的開始 ID,然后更新表時需要注意,不是原來的簡單的遞增 1,而是遞增你想要的插入多少條記錄的總數。

缺點:

1:效率問題,每次取 ID 值都需要調用存儲過程從數據庫中檢索一次。對于這種情況,我覺得效率不是很大問題,因為 SQLserver 會對我們經常調用的存儲過程有緩存,再一點,這個表的數據應該不會很大,最多上千條 (一個項目中上千個表的情況應該不是很多吧)。所以檢索不是什么問題,何況是根據表名來檢索 (表名列已是主鍵)。

看完上述內容,你們對如何屏蔽數據庫中自增 ID 功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計1597字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 枞阳县| 盱眙县| 武川县| 富源县| 贡嘎县| 渭源县| 齐齐哈尔市| 珲春市| 股票| 华阴市| 井冈山市| 东明县| 吉木乃县| 渑池县| 专栏| 玉环县| 海丰县| 永春县| 温宿县| 闸北区| 兴国县| 银川市| 松阳县| 天全县| 墨竹工卡县| 珲春市| 甘南县| 宝清县| 文成县| 永修县| 海阳市| 鄄城县| 原平市| 平遥县| 迁西县| 天等县| 沂南县| 吕梁市| 林州市| 山阴县| 柞水县|