This *might* work. You are right, it is still horrible... It might be
*effectively* accomplishing the same thing that sequences do on
PostgreSQL, however I still wouldn't use it in production as it feels
"hacky". I already have to re-design this table, so I might as well do
it 100% right.

I never expected the scale of inserts that happened yesterday and
today, nor had any proper benchmarking been done previously if it
could handle this kind of sudden rush of traffic.

--
Thadeus





On Tue, Jun 8, 2010 at 4:36 PM, mdipierro <[email protected]> wrote:
> 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 <[email protected]> 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