This seems to be a problematic FAQ, but: if I'm making an effort to
normalize my database structure how do I do cross-table validation?

Example (with extraneous things left out):

db.define_table('competitions',
    SQLField('name','string'),
    SQLField('chief_ref','string'))
db.competitions.name.requires=[IS_NOT_EMPTY(), IS_NOT_IN_DB
(db,'competitions.name')]

db.define_table('events',
    SQLField('name','string',length=64),
    SQLField('competition',db.competitions))
db.events.competition.requires=IS_IN_DB
(db,'competitions.id','competitions.name')

I want to assure that newly added events meet the constraint that the
combination of events.name+competitions.id is unique.  IOW, I don't
want two events with the same name for a specific competition.

In this simple case I think I can solve it by means discussed here
previously,  But still, I would think cross-table validation is a very
frequent requirement in real applications that there should be some
sugar for it, no?

If you use a carefully normalized schema the number of cross-table
validations requirements grows beyond just two.  And in real
"enterprise" applications, wouldn't you even need to do cross-DB
validations?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to