Для нашего API мы используем Doxygen, который является большим.
В SQL Server вы можете откатить TRUNCATE из транзакции. Как вы упомянули, он записывает освобождение страницы в журнал.
В Oracle TRUNCATE TABLE равен оператор DDL, который нельзя использовать в транзакции (или, точнее, нельзя откатить). AFAIK, если при выполнении оператора выполняется транзакция, транзакция фиксируется, а затем выполняется TRUNCATE, которое невозможно отменить.
В Informix поведение TRUNCATE немного отличается; вы можете использовать TRUNCATE в транзакции, но после этого допустимы только операторы COMMIT и ROLLBACK.
Другие СУБД, вероятно, имеют свои собственные идиосинкразические интерпретации поведения TRUNCATE TABLE.