The following is something that I have used in MySQL. MySQL statement: CREATE TABLE IF NOT EXISTS autonumbering ( Year char(4) not null default '', Type varchar(10) not null default '', ID int(11) not null auto_increment, Notes varchar(64) not null default '', CreatedOn timestamp not null default current_timestamp, PRIMARY KEY (Year, Type, ID) ) ENGINE=MyISAM AUTO_INCREMENT=1;
Code in a model: autoNumbering.define_table('autonumbering', Field('Year', 'string', length=4, notnull=True, default='', required=True, label='Year', readable=True, writable=True), Field('Type', 'string', length=10, notnull=True, default='', required=True, label='Type', readable=True, writable=True), Field('id', 'id'), Field('Notes', 'string', length=64, notnull=True, default='', required=False,label='Notes', readable=True, writable=True), Field('CreatedOn', 'datetime', notnull=True, default=datetime.datetime.now(), required=False,label='Created On', readable=True, writable=True), migrate=False ) Code in a module: def getWorkOrderNumber(Year): # Year is 4-digits, as in 2015 r = autoNumbering.autonumbering.insert(Year=Year, Type='WorkOrder') autoNumbering((autoNumbering.autonumbering.Year == Year) & (autoNumbering.autonumbering.Type == 'WorkOrder') & (autoNumbering.autonumbering.id == str(r - 1))).delete() return Year[2:] + session.CurrentYearPOLetter + str(r).rjust(5, '0') This returns a unique, sequential 5-digit number prefixed by the last two digits of the provided year. -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.