I've checked that one out, thanks! One reason I wanted to use CDBI constraints is to have my form validation logic exist only in one place. "Don't repeat yourself" and all that pragmatic stuff.
Anyway, I figure if I can just get Class::DBI to emit more meaningful exceptions from constraint failures I can catch those in an overridden CDBI::_croak. You can read more detail here on the CDBI mailing list.
-Any sufficiently advanced technology is indistinguishable from doubletalk.