2010-06-17 26 views
1

我有兩個表一個筆記和一個標記,我想從筆記主鍵的ID使用它在標記表中,但我不知道我在哪裏做錯了。我的筆記ID是由另一個表計數器生成的,功能爲dirty_update_countermnesia主鍵

我對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_note儘管在我的筆記表,我的ID字段是從櫃檯表增加。

在此先感謝您的幫助。

回答

0

mnesia:dirty_update_counter/3方法可能是你在找什麼。

+0

首先,非常感謝您的回答。 我的功能如下所示: new_id(Id) - > \t mnesia:dirty_update_counter(note,Id,1)。 – user331852 2010-06-17 18:28:46