當identity到達該欄位上限時...

程式技術/Database 2008/07/14 19:07
views: 58499 times
今天在整理資料庫時, 發現有個 table 的 identity 欄位, 即將到達上限囉. 於是便來著手研究一下會發生什麼問題.

LAB 狀況 Microsoft SQL Server 2005, 某 table 的 identity 欄位為 tinyint, 並進行 insert 測試.

狀況 1, tinyint 為 (0~255), 若於資料已屆 255 時, 再 insert 資料會發生下面錯誤 (exception):
"轉換 IDENTITY 到資料類型 tinyint 時發生算術溢位錯誤。
發生算術溢位。"

狀況 2, 先將前面 < 100 的資料刪除, 再利用 dbcc checkident('table_name', RESEED, 20) 指令執行後, 重置 identity 值 (下一筆會由 21 開始), 再進行 insert, 則可以正常 insert (dbcc checkindent 資料可以看這篇文章: SQL Server的Identity欄位使用/複製/重設 )

狀況 3, 繼續再進行 insert, 直到 99 時, 再繼續 insert 會發生 primary key violation 的錯誤.

由以上狀況可知, 一旦發生 identity 到該欄位上限時, 將會發生無法寫入資料的狀況, 而且是以算術溢位錯誤的方式發生, 一旦造成, 會有極嚴重的問題, 一定得在發生之前規劃好, 以免造成問題!


top








SanDisk Ultra SDHC Class6 16GB記憶卡 Nikon COOLPIX S30 夏日防水時尚機(公司貨) SAPIDO傻多 Mini USB供電小口袋機(RB-1632) ViewSonic ViewPad 7e ★親民平板電腦 [快]SAMSUNG WB150F WiFi 18倍變焦高畫質數位相機(公司貨) TP-LINK  TL-WR841ND 300Mbps 無線 N 路由器 PAPAGO! P3 車道偏離/車距警示行車記錄器 SanDisk 16GB Mobile Ultra microSDHC 附轉卡(平輸) Sony Ericsson Xperia neo V MT11i 影音娛樂手機 SAPIDO傻多  N速Gigabit 多網型無線寬頻分享器 (GR-1733) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 人因 Ergotech Tablet  多媒體娛樂機 ★FujiXerox DocuPrint P205b S-LED雷射印表機(粉紅機) (繁中版)Panasonic GF3+14mm F2.5+14-42mm 雙鏡組 飛利浦免油健康氣炸鍋(HD9220) 華擎平台【龍神傳說】四核SSD獨顯電玩機 美國VIZIO 47吋Full HD液晶顯示器+視訊盒 E470VL-TW(M) JSmax Android MID-1023 10.1吋平板電腦(全新升級版) lenovo ideapad G575雙核心15吋筆電【含微軟Windows 7】315301 Lenovo ideapad G570 59-309037 新雙核B950 15.6吋筆電 美國西屋42吋FHD液晶顯示器+視訊盒(LC-42E300A) OCZ Solid 3 120GB 2.5吋 SATA3 固態硬碟 HP LaserJet Pro CP1025nw 無線迷你彩色雷射印表機 D-Link DHP-501AV 500Mbps電力線網路橋接器(雙包裝) IBT-1073VOD 雲端劇院 Brinno Garden Watch Cam 生活記錄器 SAPIDO N速 3.5G易享機 支援BT (GR-1222) 35合1掌上型麻將機2代 三洋 SANYO 日本原廠 18650 全新高效能高容 2600mAh 鋰電池充電組


 Waiting...