What is the difference between DELETE, TRUNCATE and DROP in SQL Server?
Resolved SQL
PG
Priya Gibson
November 2, 2026
2 replies
1,561 views
Reviewed by moderators
2 participants

I always mix up DELETE, TRUNCATE and DROP. Can someone explain the differences, including what can be rolled back?

Accepted answer
Marked as the solution to this question

Short version:

DELETE removes rows, one at a time, and can have a WHERE clause. It fires delete triggers, logs each row, and keeps the identity counter. It can be rolled back inside a transaction.

TRUNCATE TABLE removes all rows at once by deallocating pages. It has no WHERE, does not fire delete triggers, resets the identity counter, and uses much less log. It is fast. It can also be rolled back inside a transaction in SQL Server. It can not run on a table that is referenced by a foreign key.

DROP TABLE removes the entire table, including its structure, indexes and permissions. Rolled back only inside a transaction that has not committed.

Use DELETE for some rows, TRUNCATE to empty a staging table, and DROP when the table is no longer needed. Always check which database you are in before running any of them.

Clear now, especially the identity reset. Thanks.