There are certain circumstances where you cannot use the TRUNCATE TABLE command and must use the DELETE command instead.
You cannot use TRUNCATE TABLE on tables that:
• Are referenced by a FOREIGN KEY constraint. (You can truncate a table that has a foreign key that references itself.)
• Participate in an indexed view.
• Are published by using transactional replication or merge replication.
For tables with one or more of these characteristics, use the DELETE statement instead.
TRUNCATE TABLE cannot activate a trigger because the operation does not log individual row deletions. For more information, see CREATE TRIGGER (Transact-SQL).
There is a good explanation on MSDN:
Also, see this question on Stack Overflow which has a lengthy discussion on the topic.