簡體   English   中英

RESEED數據庫上的標識列

[英]RESEED identity columns on the database

我可以用嗎?

DBCC CHECKIDENT(<table_name>, RESEED, value)

命令將標識列當前值重置為SQL Server 2008中的原始值?

如果是的話,這是正確的做法,沒有任何缺點嗎? 如果沒有,是否有另一種方法可以做到這一點?

該值可以省略。 所以,如果你使用

DBCC CHECKIDENT (<table_name>, RESEED);

SQL Server根據已使用的數字將ident值設置為正確的下一個數字。 這是我知道的重新定位身份值的唯一方法。

我可以使用DBCC CHECKIDENT命令將標識列當前值重置為SQL Server 2008中的原始值嗎?

是。

如果是的話,這是正確的做法,沒有任何缺點嗎?

這是記錄在案的方法。

可能的缺點:您最終可能會獲得重復的IDENTITY值 - SQL Server無法保證它不會返回尚未使用的值。

例如,如果您的IDENTITY當前為100,並且您將其重置為1,則可能遲早會產生一個已經使用的值。

SQL Server中實現的IDENTITY不檢查現有值或任何內容 - 它只生成序列號。 這是給你-特別是如果你做了RESEEDIDENTITY以確保值不重復。

當且僅當feild是主鍵並且引用任何其他表中的任何外鍵時,它具有很大的缺點。 重新播種有助於獲取具有該字段索引的事務表中的記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM