I just discovered that "truncate {table}" statements are not caught by most database triggers.
Am I taking any risks in terms of performances by replacing such statements by "delete from {table}" ?
I am particularly interested in MSSQL and Sybase.
DELETE will be a lot slower and heavier on resources as proper transaction logs are created. But you can make it part of a bigger transaction, and, as you say, triggers and constraints will be activated, too.
TRUNCATE is considered a DDL operation, just like DROP TABLE. It is very fast, but cannot be done as part of a transaction (i.e. you cannot rollback).
Which one you need depends on your requirements. Do you have triggers that need to run? If so, can you maybe do something instead after or before the TRUNCATE to compensate for them not running?