亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

刪除SQL Server中的記錄后重置標識種子

刪除SQL Server中的記錄后重置標識種子

紅糖糍粑 2019-08-06 12:43:49
刪除SQL Server中的記錄后重置標識種子我已將記錄插入SQL Server數據庫表。該表定義了主鍵,并且自動增量標識種子設置為“是”。這主要是因為在SQL Azure中,每個表都必須定義主鍵和標識。但由于我必須從表中刪除一些記錄,這些表的標識種子將受到干擾,并且索引列(自動生成的增量為1)將受到干擾。刪除記錄后,如何重置標識列,以使列按數字順序遞增?標識列不用作數據庫中任何位置的外鍵。
查看完整描述

3 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

DBCC CHECKIDENT ('TestTable', RESEED, 0)GO

其中0是identity起始值


查看完整回答
反對 回復 2019-08-06
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

應該注意的是,如果所有數據都是通過DELETE(即無WHERE子句)從表中刪除的,那么只要a)權限允許它,并且b)沒有引用該表的FK(似乎是在這種情況下,使用TRUNCATE TABLE將是優選的,因為它更有效DELETE?并且同時重置IDENTITY種子。

與DELETE語句相比,TRUNCATE TABLE具有以下優點:

  • 使用較少的事務日志空間。

    DELETE語句一次刪除一行,并在事務日志中為每個已刪除的行記錄一個條目。TRUNCATE TABLE通過釋放用于存儲表數據的數據頁來刪除數據,并僅在事務日志中記錄頁面解除分配。

  • 通常使用較少的鎖。

    使用行鎖執行DELETE語句時,表中的每一行都被鎖定以進行刪除。TRUNCATE TABLE總是鎖定表(包括模式(SCH-M)鎖)和頁面,但不是每行。

  • 毫無例外,表格中留有零頁面。

    執行DELETE語句后,表仍可以包含空頁。例如,如果沒有至少一個獨占(LCK_M_X)表鎖,則無法釋放堆中的空頁。如果刪除操作不使用表鎖,則表(堆)將包含許多空頁。對于索引,刪除操作可以留下空頁,盡管這些頁面將通過后臺清理過程快速釋放。

如果表包含標識列,則該列的計數器將重置為為該列定義的種子值。如果未定義種子,則使用默認值1。要保留身份計數器,請改用DELETE。

所以以下內容:

DELETE?FROM?[MyTable];DBCC?CHECKIDENT?('[MyTable]',?RESEED,?0);

變得公正:

TRUNCATE?TABLE?[MyTable];


查看完整回答
反對 回復 2019-08-06
  • 3 回答
  • 0 關注
  • 1167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號