Thanks for the tips. It seems, that if there is at least one explicit "read" (select) transaction or at least one implicit transaction with prepared (unfinalized) statement, then SQLite3 holds shared lock on file, so another process can not acquire reserved (exclusive) lock and write updates.
Because I work with high level components sqlDB I can not control SQLite at API level (as required by example in PHP link above).
Any other ideas ?
Other components like TSqlite3Dataset also have this "problem"?