I know this horrible but it does solve some of the problems... db.define_table('whopper_seq',Field('dummy'))
db.define_table('yourtable',... Field("whopper_id", "integer",compute=lambda r: db.whopper_seq.insert(dummy=None)) ...) On Jun 7, 8:29 pm, Thadeus Burgess <thade...@thadeusb.com> wrote: > I have a problem. > > I have this in the database.... > > Field("whopper_id", "string", default=None, unique=True), > > The thing with whopper_id is it always stores numbers. Said numbers > are anywhere from 20000 to 60000. > > Also upon entering a new entry, I do the following > > last_whopper_id = db(db.table.id > 0).select(db.table.whopper_id, > orderby=~db.table.whopper_id, limit=(0,1)).first().whopper_id > db.insert(whopper_id = (int(last_whopper_id) + 1)) > > So I do all this juju just to get the number to autoincrement. > > The problem is, this structure is bad... first I'm storing integers in > a string field, and then manually incrementing them!!!! > > I get errors like... IntegrityError: duplicate key value violates > unique constraint "table_whopper_id_key"... when two requests come in > to create a record within miliseconds of each other. > > Here is where I need some help please. > > I need to convert this entire field, into an autoincrementing integer > performed by the database, however ALL current whopper_ids must stay > EXACTLY the same. > > I don't know how to accomplish this with web2py. I know what I want... > > Field("whopper_id", "integer", unique=True, autoincrement=True) > > But how do I convert all existing whopper_ids over and keep them the exact > same? > > Is this even possible with web2py and the DAL? > > -- > Thadeus