In mysql you can declare a integer column to be auto_increment and it will handle for you giving each row a different number. Other databases have similar mechanisms. It sounds like the invoice number is the primary key for the invoice table? If you have a integer primary key in sqlalchemy, it assumes that you want to make it auto increment so this should all happen automatically.
On Tue, Jun 24, 2008 at 10:13 AM, <[EMAIL PROTECTED]> wrote: > > hi > lets have, say, invoice-numbers. > a completely new invoice has new invoice-number. > same invoice may have many versions - the invoice-number does not > change. > > how to safely generate a new number for each new document (lets say it > is simple number-incrementing)? > > one safe and simple way i've just invented is to have a separate table > of one column - the invoice-numbers - and have a foreign key to it. > First version of new invoice will create a row in the table and link > to it, other versions of the invoice keep the link. Besides the > simplicity this allows for any numbering scheme - whatever one puts > there; even the table may have just primary id if just rowids are > enough. > > More space-savvy way is to have just one table with a row per > numbering-type (one for invoice-numbers, one for account-numbers, > employee-numbers etc), and for a new document increment the > respective row and get its value. If there are sequences, this seems > alright, the whole operation is atomic. > > But if there are no sequences, i cannot make this multi-access safe. > atomic updates are alright for avoiding races, but reading the value > after that - no guarantee it is right one, another atomic update may > have sneaked in meanwhile. Any help here? > or should i use locking? im trying to avoid it... > > ciao > svilen > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---