1

テーブルを切り捨てようとすると、次のようなエラー メッセージが表示されます。

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

そのクエリがわかりません..誰か助けてください。

4

2 に答える 2

1

注意すべきことの1つは、ID列を切り捨てるとリセットされることです。削除すると、削除されません。したがって、削除を実行し、最後の値が 242 だった場合、次の値は 243 になります。

切り捨てを行う唯一の方法は、リレーションを削除することです。個人的には、すべての関係を削除してから元に戻すのではなく、削除するだけです。

于 2013-04-10T19:45:09.920 に答える
1

なんで?

その理由は、TRUNCATE が個々のチェックなしですべてのレコードを削除するためです。

したがって、DELETE FROM Locations は各レコードを削除し (トランザクション ログに記録されます)、制約に違反していないことを確認します。

TRUNCATE TABLE Locations はこれを行いません。単一の切り捨てアクションが実行され (そしてログに記録され)、これがより高速な理由です。

詳細については、この記事を参照してください。

回避策

最も簡単な方法は、切り詰めるのではなく削除することです。ただし、実行時間が長く、安全に制約を削除できる場合は、スクリプトを記述して、制約を削除し、テーブルを切り捨て、制約を作成することをお勧めします。

于 2013-04-10T09:39:58.490 に答える