On Monday, April 4, 2011 9:39:31 AM UTC-4, Neveen Adel wrote: 
>
> Thanks a lot  Massimo :) 
>
> The problem with this solution is that i have a table has member_id as 
> foreign key and by this solution that data will be lost.

 
Are you saying in the legacy database, the 'member' table has a 
'membership_id' field, which is an auto-increment integer field and is 
linked as a foreign key in one or more other tables? In that case, why 
wouldn't Massimo's suggestion work? If you specify Field('membership_id', 
type='id'), you are telling web2py not to create a field named 'id', but 
instead to use the 'membership_id' field as the auto-incrementing primary 
key for the 'member' table. I would think it would still work as a foreign 
key in other tables in that case. Have you tried it?
 
Also, as an aside, if you need the MAX of a field, I believe the web2py DAL 
has a max() method (as well as min and sum), but it doesn't appear to be 
documented in the book, and I'm not sure about the details of its usage. 
Perhaps Massimo or someone else can elaborate (and maybe even update the 
book).
 
Anthony
 
 

> On Apr 4, 3:31 pm, Massimo Di Pierro <massimo....@gmail.com> 
> wrote: 
> > how about 
> > 
> > db.define_table("member", 
> >       SQLField("membership_id", "id"), 
> >       SQLField("first_name", "string", notnull=True) 
> > ) 
> > 
> > and "membership_id" would be your "id" field? 
> > 
> > On Apr 4, 8:03 am, Neveen Adel <nevo...@gmail.com> wrote: 
> > 
> > > Thanks Anthony for your reply. 
> > 
> > > The table already have an old data so i can't remove the column id or 
> > > change in the database structure. 
> > 
> > > Is there another solution in controller level not database level? 
> > 
> > > Thanks in Advance 
> > 
> > > On Apr 4, 2:54 pm, Anthony <abas...@gmail.com> wrote: 
> > 
> > > > Your table already includes an 'id' field by default, which is an 
> > > > auto-increment integer field starting at 1. Why do you need a 
> separate 
> > > > 'membership_id' field? If it's a legacy database and you need the 
> name of 
> > > > the 'id' field to be 'membership_id', you can simply define the field 
> type 
> > > > as 'id' (seehttp://
> web2py.com/book/default/chapter/06?search=auto-increment 
> > > > ). 
> > 
> > > > Also, you should use Field() instead of SQLField() -- they're both 
> the same, 
> > > > but the latter has been deprecated in favor of the former. 
> > 
> > > > Anthony 
> > 
> > > > On Monday, April 4, 2011 8:35:00 AM UTC-4, Neveen Adel wrote: 
> > > > > Hello, 
> > 
> > > > > I have the following table: 
> > 
> > > > >  db.define_table("member", 
> > > > >       SQLField("membership_id", "integer",notnull=True), 
> > > > >       SQLField("first_name", "string", notnull=True) 
> > > > > ) 
> > 
> > > > > and i want  the membership id to be incremented automatically. 
> > 
> > > > > the way i used : 
> > 
> > > > >  every time i inserted it , i select the max membership_id and 
> adding 
> > > > > one on its value as: 
> > 
> > > > >   result=db.executesql("select max(membership_id) from member") 
> > > > >   record=result[0] 
> > > > >   if record[0]: 
> > > > >     next_membership_id = record[0]+1 
> > > > >   else: 
> > > > >      next_membership_id=1 
> > > > >    form.vars.membership_id=next_membership_id 
> > 
> > > > > But this solution allows duplicates?? 
> > 
> > > > > could anyone tell me  what is the perfect solution? 
> > 
> > > > > Thanks in Advance

Reply via email to