Hello,
I am using such a self-written auto-number generator on MS-SQL Server and Sybase databases for generating compound numbers, e.g. suffix.sequence-number.prefix. The numbers are generated from a user definded function for a specified table, say UDF genKey('table_name').
UDF genKey is able to manage various types of compound numbers, for example numbers which are taken from a given interval, numbers incremented by 10, numbers which are reset to start value if max. value exceeded. The data of all number types are stored in an own database table, say genkeys.
-- In principle, using such a number generator proceeds as follows:
create table genkeys ( ... )
insert into genkeys (... data of your specific number generator ...)
create function genKey (in keyTable varchar(25))
returns keyDomain
-- Generate new key for table keyTable depending on generator data stored in genkeys
return (new_key_for_table_keyTable);
end;
-- Usage of genKey
begin transaction
... ;
Insert into myTable (pk_ofmyTable, ... ) values (genKey('myTable'), ...);
... ;
commit;
-- Because UDF genKey() modifies table genkeys, this update and the insert/ updates
-- using genkeys must build a unit of work, therefore begin transaction and commit are
-- absolutely necessary, ok, also sometimes rollback instead of commit.
The outlined generator system works efficiently on the noted databases. The UDF keyGen is written in SQL standard language PSM (Persistent Storage Modul, really weird name for a SQL procedural language derived from Oracles PL/SQL, now has been standardized since 1999) and is portable for most database systems.
…