Hi!
Wenn Du noch das DB-System preis gibst, wäre es noch einfacher.
Eine Antwort hast Du schon bekommen, ein weiteres liegt an der technischen Durchführung der Aktionen:
DELETE: ein Löschen von Datensätzen, inkl. aller Einträge in Logs usw. (unter Oracle reicht hier ein stinknormaler Delete-Grant.
TRUNCATE: Die Tabelle wird gedroppt und neu angelegt - so braucht man unter Oracle beispielsweise ein Create- und Drop-Any-Table-Grant (also wesentlich mächtigerere Rechte als für ein Kinderkram-Delete 
Konkret hatte ich gerade mit truncate das Problem die Tabelle
nicht leeren zu können, da unique/primary key constraints auf
der Tabelle angelegt waren.
Die UKs und PKs werden sicherlich NICHT das Problem gewesen sein, eher die FKs, die auf die Tabelle zeigen.
Bei einem Delete erfolgt der Check lediglich auf den zu löschenden Datensatz (ob es Beziehung auf ihn gibt); beim Truncate ist der DB wurscht, ob es Beziehungen gibt oder nicht, es darf nicht mal eine _theoretische existieren - also gehören diese Beziehung vorher deaktiviert/gelöscht.
Wo liegt hier das Problem, wenn ich alle Daten löschen möchte?
Ein FK von einer anderen Tabelle … schätze ich.
Grüße,
Tomh_