As I said, the problem is not the names or when they should be called.
The problem is. What should be input and the output of each of these
functions?

On Oct 11, 9:03 pm, Vinicius Assef <vinicius...@gmail.com> wrote:
> I suggested it 2 years ago. I'll be happy if it come true someday, in web2py.
>
> I see it as database triggers: before_<event> & after_<event>. I.e:
> before_insert, after_insert. Event can be: insert, update, delete,
> query.
>
> "before_insert" receives values that will be inserted on database. It
> is the last chance to modify, check some value or make run some
> routine before register is inserted.
> "after_insert" receives values just stored there.
>
> "before_update" receives data stored on the database, before the
> record is updated. As "before_insert", this is a last chance event.
> "after_update" receives data contents after the update took place.
>
> "before_delete" receives data stored on the database. As
> "before_update" does. Also, it's a last chance event.
> "after_delete" receives same data, but after register was deleted.
>
> "before" and "after" query I don't see as important. Web2py already
> has virtual and computed fields. But would be nice to log accesses to
> some table.
>
> I worked with these triggers on Sybase, many years ago. But I remember
> how it was nice to make stored procedures and triggers counting on
> these events (except query events. I just saw it on Oracle),
> guaranteeing db integrity.
>
> --
> Vinicius Assef.
>
> On Tue, Oct 11, 2011 at 7:42 PM, Massimo Di Pierro
>
>
>
>
>
>
>
> <massimo.dipie...@gmail.com> wrote:
> > the problem with this is not the names. ;-)
>
> > Consider the case of preupdate and onupdate.
>
> >   db(db.person.age>18).update(can_drink=True)
>
> > What information should be passed to preupdate and update? tablename?
> > query? {'can_drink':True}? Number of affected records? Should there be
> > one onselect per table? We do not want to call onupdate for every
> > table, do we (performance issues)?
>
> > What about?
>
> >   db(db.person.id=2).update(can_drink=True)
>
> > What about
>
> > db(db.person).select(left=db.dog.on(db.dog.owner==db.person.id),limitby=(0, 
> > 1))
>
> > What should we pass to onselect? query? left? limitby? all arguments?
> > number of returned records? returned records? In this case we cannot
> > pass one table because because more than one table may be involved.
>
> > Every one of those callbacks would need a different signature. It
> > would not be obvious and I am not sure people would agree.
> > I do not oppose to this. I just want to hear more from you.
>
> > Massimo
>
> > On Oct 11, 4:57 pm, Bruno Rocha <rochacbr...@gmail.com> wrote:
> >> Would be nice to have some global events in web2py workflow. I can imagine
> >> some useful hooks:
>
> >> workflow global events:
>
> >> onrequest # before the execution of action/model
>
> >> prerender # after the execution of action/model but before the view
> >> rendering
>
> >> onrender # after the view render but before the output
>
> >> onresponse # after all the request process finished.
>
> >> DAL global events:
>
> >> preselect - onselect
> >> preinsert - oninsert
> >> preupdate - onupdate
> >> predelete - ondelete
>
> >> ASPnet has some usefull event system (oninit, onload, pageload etc..)
>
> >> I dont even know if it is possible to trigger all of them in web2py and how
> >> can it cost. but would be nice to have it.
>
> >>http://zerp.ly/rochacbruno
> >> Em 11/10/2011 17:23, "Massimo Di Pierro" <massimo.dipie...@gmail.com>
> >> escreveu:
>
> >> > Not yet at the db level but at the form level:
>
> >> > form=SQLFORM(...).process(onsuccess=lambda form:...)
>
> >> > On Oct 11, 3:11 am, Manuele <manuele.pese...@gmail.com> wrote:
> >> > > Hi,
> >> > > is there a way to trigger some functions on database eventes, for
> >> > > example on new record?
>
> >> > > thanks a lot
>
> >> > >      Manuele

Reply via email to