【发布时间】:2011-03-04 21:00:17
【问题描述】:
我有两张表,一张笔记和一个标签,我想将笔记中的 id 作为主键,以便在标签表中使用它,但我不知道我哪里做错了。我的笔记 id 是从另一个表计数器生成的,函数为 dirty_update_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.
但是这个函数不会从表格标签中增加我的字段id_note,尽管事实上在我的笔记表中,我的 id 字段是从计数器表中增加的。
提前感谢您的帮助。
【问题讨论】: