Erlang 记忆主键
我有两个表,一个notes和一个tag,我想让notes的id主键在tag表中使用,但我不知道哪里出错了。我的notes id是从另一个表计数器生成的,带有函数dirty\u update\u counter id_notes from标记的函数如下所示: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
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。