##
package Model::Validate::Foo;
sub on_insert {
my %value_of = @_;
if ( !$value_of{a} ) {
die "a is required";
}
if ( $value_of{b} !~ /\d+\.\d+\.\d+/ ) {
die "invalid b";
}
if ( !$value_of{c} ) {
die "c is required if a" if $value_of{a};
}
}
##
##
...
##
##
sub avg_a {
# called on insert, update of table foo
# check if average(a) > 100
}