1
두 개의 테이블에 하나의 노트와 하나의 태그가 있으며 노트의 기본 키에서 ID를 태그 테이블에 사용하려면 이드를 만들고 싶습니다.하지만 어디에서 잘못했는지는 알 수 없습니다. 내 노트 ID는 dirty_update_counter
과 함께 다른 테이블 카운터에서 생성됩니다.mnesia 기본 키
태그의 id_notes
에 대한 나의 기능은 다음과 같습니다 :
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 필드가 있다는 사실에도 불구하고, 테이블 태그에서 제 분야 id_note
를 증가하지 않습니다 카운터 테이블에서 증가합니다.
미리 도움을 청하십시오.
감사합니다. 우선, 귀하의 답변에 대해 감사드립니다. 내 기능은 다음과 같습니다. new_id (Id) -> \t mnesia : dirty_update_counter (참고, Id, 1). – user331852