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

Reply via email to