in reply to Re^4: Creating a model of a bad database
in thread Creating a model of a bad database

Exactly, that's why an ORM such as Class::DBI (or the other ones with which I'm not familiar yet) would be a good choice: you could program the triggers in the ORM layer. Of course, that requires that *all* access to the database goes through your ORM, and I don't know how realistic that is in your situation.

With judicious overriding of CDBI's basic SQL snippets, connecting multiple tables is fairly simple. As an example, Retrieve is defined like this:

__PACKAGE__->set_sql(Retrieve => <<''); SELECT __ESSENTIAL__ FROM __TABLE__ WHERE %s
I think it's fairly obvious how to extend that to perform a join. Doing updates or inserts this way seems more difficult though. I don't think MySQL allows multiple statements from a single DBI call (e.g. $dbh->do('update foo; update bar')). Besides, it looks like the %s placeholders are too limited for that anyway.

I'm probably not telling you anything you didn't already know, but I thought I'd write down these hints anyway. Someone is bound to have a use for them :-)