Unfortunately, the only standard way to do it in a non-database-specific way is to use a separate table like you do.
I suppose that my SQL library could provide some kind of generalised API to it, but the problem is that different databases handle this in such a wildly different manner that it'd be hard to make it useful. Not even full-featured generic API's such as JDBC does this.
I'd suggest you stick with the separate table for now.
Oh, and I'll be committing a fix within the next half hour that actually implements transaction support for SQLite. Please use these commands instead of directly calling begin/commit as SQL calls, since the library will keep track of active transactions so that they can be rolled back on error.