2013-04-10 142 views
0

當我試圖截斷表,我得到了錯誤信息如下,不能截斷表

**Cannot truncate table 'Locations' because it is being referenced by a FOREIGN KEY constraint.** 

我不知道that..Anyone查詢幫助我。

+0

刪除表'location'的所有關係,然後嘗試... – 2013-04-10 09:32:19

+1

有什麼不清楚的錯誤信息? – 2013-04-10 10:02:55

回答

1

爲什麼?

TRUNCATE之所以刪除所有記錄而沒有單獨檢查。

因此,DELETE FROM Locations將刪除每個記錄(並且這是事務日誌中記錄的內容),檢查是否違反了約束條件。

TRUNCATE TABLE位置不會執行此操作。執行單個截斷操作(並記錄),這就是爲什麼更快。

查看this article瞭解更多信息。

解決方法

最簡單的方法是刪除,而不是截斷。但是,如果這有很長的執行時間,並且可以安全地刪除約束,則可能需要編寫一個腳本來刪除約束,截斷表和創建約束。

1

有一點需要注意 - 當您截斷標識列時將被重置。當你刪除它沒有。因此,如果您執行刪除操作並且最後一個值爲242,則下一個值將爲243.

執行截斷操作的唯一方法是刪除關係。就個人而言 - 我只是刪除而不是刪除所有的關係,然後把它們放回去。