當想要清空資料表時,我們可以用 TRUNCATE 語句來達到,但是當該資料表有使用外部索引鍵時,會出現如下錯誤:

1
2
無法截斷資料表'Table',因為該資料表正由FOREIGN KEY 條件約束參考
Cannot truncate table 'Table' because it is being referenced by a FOREIGN KEY constraint

因為外部索引鍵的關係造成無法執行 TRUNCATE 語句,當然我們可以直接用 DELETE 語句來清空資料,不過資料表中如果具有自動增值 (Auto increase) 的識別 (Identity) 欄位,編號並不會重新計算。這時候可以用兩種方法來達成目的:

第一種:

先刪除 FK 的限制後,使用 TRUNCATE 語句,最後再將 FK 重新建立回來。

第二種:

當資料表很多又可能有很多 FK 的時候,使用第一種方式顯然是相當麻煩,這時候可以使用下面的語句達到目的

1
2
3
4
5
USE [DbName]
GO

DELETE [Table];
DBCC CHECKIDENT('Table', RESEED, 0);

DELETE 語句刪除資料之後,再將編號重置為 0 即可