テーブルを切り捨てようとすると、次のようなエラー メッセージが表示されます。
**Cannot truncate table 'Locations' because it is being referenced by a FOREIGN KEY constraint.**
そのクエリがわかりません..誰か助けてください。
テーブルを切り捨てようとすると、次のようなエラー メッセージが表示されます。
**Cannot truncate table 'Locations' because it is being referenced by a FOREIGN KEY constraint.**
そのクエリがわかりません..誰か助けてください。
注意すべきことの1つは、ID列を切り捨てるとリセットされることです。削除すると、削除されません。したがって、削除を実行し、最後の値が 242 だった場合、次の値は 243 になります。
切り捨てを行う唯一の方法は、リレーションを削除することです。個人的には、すべての関係を削除してから元に戻すのではなく、削除するだけです。
なんで?
その理由は、TRUNCATE が個々のチェックなしですべてのレコードを削除するためです。
したがって、DELETE FROM Locations は各レコードを削除し (トランザクション ログに記録されます)、制約に違反していないことを確認します。
TRUNCATE TABLE Locations はこれを行いません。単一の切り捨てアクションが実行され (そしてログに記録され)、これがより高速な理由です。
詳細については、この記事を参照してください。
回避策
最も簡単な方法は、切り詰めるのではなく削除することです。ただし、実行時間が長く、安全に制約を削除できる場合は、スクリプトを記述して、制約を削除し、テーブルを切り捨て、制約を作成することをお勧めします。