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