The database validation may be looser than your app's validation. If
they're an exact match for your right now, you're lucky, but I
wouldn't plan your design around that being true forever. My
suggestion is to use a form handler package of some kind to do your
application-level data validation, only passing data onto RDBO after
you're sure it's valid. To avoid repeating validation code in the
cases where the db and app constraints match, you can automatically
generate your form constraints based on your RDBO column metadata. (I
think there are a few CPAN packages for doing this.)
(If you want to use RDBO as an "unvalidated data container" to pass
values around inside your app, then I suppose you could avoid putting
any constraints on your columns (length, min/max, etc.) and let the
database do all the validation and data rejection.)
Finally, if your primary concern is with string lengths, this option
may help you keep your column constraints while also not dying on bad
input:
http://search.cpan.org/dist/Rose-DB-Object/lib/Rose/DB/Object/Metadata/Column/Scalar.pm#overflow
-John