[CDBI] after_set_$col and after_create
[prev]
[thread]
[next]
[Date index for 2005/10/25]
I keep running into this inconsistency in using triggers and was wondering
if there is a standard way to get around it.
The statemtnt
my $foo=Foo->create({first=>"hello", second=>"world"});
is basically equivalent to
my $foo = Foo->create();
$foo->set(first=>"hello", second=>"world");
$foo->update();
with the exception of some performance considerations. In general, we
chosse one form over the other depending on the desired flow of execution,
efficiency, etc.
Here is a type of trigger that one might write if real triggers are not
available within the db engine:
Foo->add_trigger(after_set_first => sub {shift()->flag(1) });
This trigger will only be executed in the second example above - when we are
using set() to place the values into the record, rather than create -
Class::DBI::create() does not use set, nor calls after_set_ triggers.
To fix this, we may add a before_create trigger that checks if we are
setting the column and calls the same function.
Now everything works as it should. However, the default behavior seems off
as the developer has to make sure all the after_set (or before_set) triggers
are duplicated elsewhere.
_______________________________________________
ClassDBI mailing list
ClassDBI@xxxxx.xxxxxxxxxxxxxxxx.xxx
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
|
[CDBI] after_set_$col and after_create
Kate Yoak 03:07 on 25 Oct 2005
|