Contents Introduction Good DBI programming practise Check the returns from DBI calls RaiseError Test inserts/updates worked Protect calls you expect could legitimately fail with evals Use transactions, protect them with eval and commit or roll them back after the eval Consider adding comments to SQL What you get in DBI out of the box to help you DBIx::Log4perl Advantages of using DBIx::Log4perl Wh