Erlang 记忆主键

Erlang 记忆主键,erlang,mnesia,Erlang,Mnesia,我有两个表,一个notes和一个tag,我想让notes的id主键在tag表中使用,但我不知道哪里出错了。我的notes id是从另一个表计数器生成的,带有函数dirty\u update\u counter id_notes from标记的函数如下所示: Fun = fun() -> mnesia:write(#tag{ id_note =0}) end, mnesia:transaction(Fun). gene

我有两个表,一个notes和一个tag,我想让notes的id主键在tag表中使用,但我不知道哪里出错了。我的notes id是从另一个表计数器生成的,带有函数dirty\u update\u counter

id_notes from标记的函数如下所示:

Fun = fun() -> 
                mnesia:write(#tag{ id_note =0}) 
        end, 
        mnesia:transaction(Fun). 

generate_Oid(TableName) when is_atom(TableName) -> 
        F = fun() -> 
                [Oid] = mnesia:read(tag, TableName, write), 
                NewId = Oid#tag.id_note+1, 
                New = Oid#tag{id_note = NewId}, 
                mnesia:write(New), 
                NewId 
        end, 
        mnesia:transaction(F). 

insert_n(N) when is_record(N, note) -> 
        F = fun() -> 
        {atomic, Id} = generate_Oid(note), 
        New = N#note{id = Id}, 
        mnesia:write(New), 
        New 
        end, 
        mnesia:transaction(F). 

find_n(Id) when is_integer(Id) -> 
        {atomic, [N]} = mnesia:transaction(fun() -> 
                mnesia:read({note, Id}) 
                        end), 
N.
但该函数不会从表标记中递增my field id_note,尽管在my note表中,my id字段是从计数器表中递增的


提前感谢您的帮助。

方法可能正是您想要的。

首先,非常感谢您的回答。我的函数如下:new_idId->mnesia:dirty_update_counternote,Id,1。