91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-10-13 11:53:19 來源:億速云 閱讀:188 作者:柒染 欄目:數據庫

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

  在平時的項目開發中,我相信有很大一批人都在用這個數據庫自增ID,用數據庫自增ID有利也有弊。平時在開發項目的時候,一般都沒有用到數據庫的自增ID。下面億速云小編來講解下如何屏蔽數據庫中自增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功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

屯昌县| 寿光市| 蒲江县| 灌南县| 邵东县| 怀柔区| 九龙城区| 巴塘县| 繁昌县| 太保市| 黄冈市| 阜平县| 邵阳市| 泸定县| 阳城县| 绩溪县| 商水县| 元阳县| 普洱| 临朐县| 巨野县| 广丰县| 襄樊市| 雷州市| 汉川市| 永康市| 盐山县| 景泰县| 砚山县| 蕉岭县| 门源| 尚义县| 昭觉县| 来安县| 库车县| 清新县| 昌黎县| 安阳县| 古浪县| 怀柔区| 湄潭县|