SQLServer數據庫DBCC CHECKIDENT命令介紹


 
在SQLServer輸入數據時,碰到有主鍵ID需要維護時,可使用IDENT_CURRENT和CHECKIDENT命令來維護。
 
IDENT_CURRENT命令返回指定表或視圖生成的最后一個標識值。用法如下:
 
      IDENT_CURRENT('table_name')
 
返回類型numeric(38,0).
 
 
DBCC  CHECKIDENT命令用於檢查或指定當前表/視圖的標識值。用法如下:
 
DBCC CHECKIDENT
(
     table_name
          [, {NORESEED | {RESEED [, new_reseed_value] } } ]
)
[WITH NO_INFOSGS]
 
 
一般我們的用法如下:
1) 查看且如有必要更正當前標識值:
      DBCC CHECKIDENT('table_name')
 
2) 查看當前標識值,即使有錯也不視圖更正:
      DBCC CHECKIDENT('table_name', NORESEED)
 
3) 指定新的標識值:
      DBCC CHECKIDENT('table_name', RESEED, new_reseed_value)
 
WITH NO_INFOSGS是關閉消息提示。
 
--------------------------------------------------
 
需要注意的問題:
當設置的new_reseed_value小於表中主鍵ID的值時,后續再插入過程中會出現以下錯誤:
 a) 當主鍵或唯一約束存在時,會報2627錯誤,因為當前的主鍵值已在數據表中,產生沖突;
 b) 當主鍵或唯一約束不存在時,會報重復主鍵錯誤。
 
解決方法:
 先使用select max(id) from table_name, 查詢出表中最大的ID,然后重新設置一個比其打的new_reseed_value;
 如果表中數據已經刪除,可以使用DBCC CHECKIDENT('table_name', NORESEED, 1)置為1,然后用DBCC CHECKIDEN('table_name')來修正。
 
另外,在SQL中,如果要插入ID,一般我們可以用select IDENT_CURRENT('table_name')+1 來插入比當前序列值多1的值。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM