One of the common tasks the web application might be required to perform, especially the app using some kind of a CMS, is to save the history of data changes. Your client for sure will want the answer to this simple question - If I mess this up or delete by accident can we bring it back? Well, DB backup is one thing and quick recovery is another - let's talk about latter one.
To secure your database from inconsistencies resulting from failing (complex) operations, you (should) use transactions.
However, complex methods often rely on other complex methods that themselves build on transactions.
This HowTo presents a method to nest or embed transactions without relying on the database's nesting capabilities.
You may have scenarios, where you want to store a specific array configuration to the database. A classic example could be saving Yii widget configuration to the database and then retrieving it at runtime, with dynamic parameters set. This wiki discusses one of the approaches to do this. Let's consider you have something like the NavBar configuration below to store in the db: