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

Reply via email to