you're all forgetting that: - relational database do have FK working - sqlite is not properly relational in matters of FK, unless you're working with a recent app (foreign key support was introduced by default in a recent release) and a fresh database - list:reference is not something baked in the backend: it's a special representation that web2py and only web2py uses: web2py can't take care of pruning all references to the "color" going thoughout all your tshirt records every time you delete a color.
On Friday, March 21, 2014 6:30:24 PM UTC+1, PN wrote: > > You're right, the update is defined on the field like you have. I have > used 'NO ACTION' on a reference field with no issues. However never tried > it 'SET NULL' on a List:reference. I spoke too soon. > > On Friday, March 21, 2014 1:21:34 PM UTC-4, André Kablu wrote: >> >> I think you are mistaken... >> ondelete is for use with upload and reference fields... >> >> >> http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Field-constructor >> >> >> >> >> On Fri, Mar 21, 2014 at 1:54 PM, PN <pal...@fielddiagnostics.com> wrote: >> >>> Your desired behavior is that when a color is deleted it should be set >>> to null in tshirts, so you need to put the ondelete attribute in the color >>> field in the color table instead of on the colors field in the tshirt table. >>> >>> db.define_table('color', >>> Field('color', 'string', ondelete="SET NULL")) >>> >>> >>> db.define_table('tshirt', >>> Field('name', 'string'), >>> Field('colors', 'list:reference color')) >>> >>> >>> On Thursday, March 20, 2014 2:15:56 PM UTC-4, André Kablu wrote: >>>> >>>> I have 2 tables, using sqlite: >>>> >>>> db.define_table('color', >>>> Field('color', 'string')) >>>> >>>> >>>> db.define_table('tshirt', >>>> Field('name', 'string'), >>>> Field('colors', 'list:reference color', >>>> ondelete="SET NULL")) >>>> >>>> >>>> When I delete a color, all tshirts that have this color will break with >>>> the error message: >>>> "using a recursive select but encountered a broken reference" >>>> >>>> >>>> So the delete() is not putting NULL on the reference... >>>> >>>> This is a bug right? Not the correct behavior... >>>> >>>> I was using list:reference b/c it seems much easier than building 3 >>>> tables... but now I am not sure if it is good to be used once it is not >>>> "automatic"... >>>> >>>> >>>> >>>> >>>> >>>> -- >>> Resources: >>> - http://web2py.com >>> - http://web2py.com/book (Documentation) >>> - http://github.com/web2py/web2py (Source code) >>> - https://code.google.com/p/web2py/issues/list (Report Issues) >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "web2py-users" group. >>> To unsubscribe from this topic, visit >>> https://groups.google.com/d/topic/web2py/TycU_Q-ywYI/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> web2py+un...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.