[Zope] ZSQL Method Question

John Schinnerer john at eco-living.net
Wed Jul 19 02:20:53 EDT 2006


Aloha,

I think so, for the moment anyhow!
Thanks all,
John S.

Cliff Ford wrote:
> Comment on Peter's suggestion: I am no expert on these things, but it is 
> my understanding that for MySQL LAST_INSERT_ID() fetches the last 
> autoincrement value made by the current insert, so the outcome is not 
> affected by virtually simultaneous requests. And I don't think MySQL 
> accepts a value for the autoincrement key. I am a bit surprised that the 
> code you quote is reliable - surely there is a possibility of an insert 
> after calling GetNextID and before calling SQLInsert in the python code?
> 
> Comment on Tino's suggestion: I think that LAST_INSERT_ID() is MySQL 
> specific and I guess CURRVAL() is Postgres specific. But the principle 
> is the same: calling within the same Z SQL Method ought to be safe.
> 
> Anyway, I hope John has had is question answered.
> 
> Cliff
> 
> Tino Wildenhain wrote:
> 
>> Peter Bengtsson wrote:
>>
>>> What if you have 1,000,000 requests/sec?
>>> What if between the INSERT and the LAST_INSERT_ID() another INSERT is 
>>> made?
>>>
>>> I use PostgreSQL and with postgres you can always ask the sequence what
>>> the next id is going to be. It goes something like this::
>>>
>>> next_id = context.GetNextId()[0].next_id
>>> context.SQLInsertUser(uid=next_id, name='Peter')
>>>
>>> where 'GetNextId' is a ZSQL method that looks like this::
>>>
>>> <params></params>
>>> SELECT NEXTVAL('users_uid_seq') AS next_id
>>
>>
>>
>> Its even easier:
>> one ZSQL Method:
>>
>> INSERT INTO foo (foo_id,blah,bar) VALUES
>> (nextval('foo_foo_id_seq'),<dtml-sqlvar blah> ... );
>> SELECT CURRVAL('foo_foo_id_seq') as foo_id;
>>
>> But your above solution is valid too.
>>
>> Regards
>> Tino
>> _______________________________________________
>> Zope maillist  -  Zope at zope.org
>> http://mail.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -  http://mail.zope.org/mailman/listinfo/zope-announce
>>  http://mail.zope.org/mailman/listinfo/zope-dev )
> 
> _______________________________________________
> Zope maillist  -  Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )
> 

-- 

John Schinnerer - MA, Whole Systems Design
------------------------------------------
- Eco-Living -
Whole Systems Design Services
People - Place - Learning - Integration
john at eco-living.net
http://eco-living.net


More information about the Zope mailing list