Mnesia provides some obscure API called dirty_increment_update/3. This can be used to generate unique ids. Here is an example.
-module (uniqueid).
-export( [test/0] ).
-record( unique_ids, {type, id} ).
test() ->
mnesia:start(),
mnesia:create_table( unique_ids, [{attributes, record_info(fields, unique_ids)}] ),
Id = mnesia:dirty_update_counter(unique_ids, record_type, 1),
io:format( "Id => ~p~n", [Id] ),
Id1 = mnesia:dirty_update_counter(unique_ids, record_type, 1),
io:format( "Id => ~p~n", [Id1] ),
Id2 = mnesia:dirty_update_counter(unique_ids, another_type, 1),
io:format( "Id => ~p~n", [Id2] ),
The output you will get is
Id => 1
Id => 2
Id => 1
A single table can be used to generate the unique ids for other tables. In this example, unique ids are generated for record_type and another_type.
No comments:
Post a Comment