The SQLite documentation says it is transactional.
The explanation in the linked article states that if a C++ program which has the SQLite C++ code statically linked into it is forcibly terminated (for example, TerminateProcess() in WinAPI) or crashes when a write is being performed the database remains intact - either fully updated or fully unchanged.
Has anyone actually seen this reliably working? Does this work unconditionally or does it require any additional measures to be taken?