Do not use unique=True.

Instead look at using the IS_NOT_IN_DB validator with a set which
includes both rows. See the book:

http://www.web2py.com/book/default/chapter/07#Database-Validators


On Feb 19, 10:44 pm, Ross Peoples <[email protected]> wrote:
> I ran across this problem a little bit ago and can't seem to solve it.
> I have two tables similar to this:
>
> db.define_table('site',
>     Field('site_name', length=255),
>     format='%(site_name)s'
> )
>
> db.define_table('content',
>     Field('site', db.site, unique=True),
>     Field('slug', length=80, requires=IS_SLUG(check=True),
> unique=True)
> )
>
> The idea being that no site can have more than one of the same slug,
> yet each site could have the same slug. Take this for example:
>
> This should work:
> site = 1, slug = 'test'
> site = 2, slug = 'test'
>
> This should fail:
> site 1, slug = 'test'
> site 1, slug = 'test'
>
> However, when the table definition was created, only the slug field
> was marked as unique in MySQL. This makes the section that says "This
> should work" actually fail and generate a ticket with the following
> text: Duplicate entry 'test' for key 'slug'
>
> Is this a bug or am I not doing this right? I thought I could put
> unique=True on multiple fields.

Reply via email to