mnesia 数据库动态添加字段

-module(test).

-export([init/0,insert/0,update/0]).

-record(old, {key, val}).

-record(new, {key, val, extra}).

 %%创建一个old表,里面存放的是old记录

init() ->   mnesia:create_table(old, [{disc_copies, [node()]}, {attributes, record_info(fields, old)}]).

%%向数据库中添加数据

insert() ->  mnesia:dirty_write(old, #old{key=1,val="asd"}).

%%在数据库中添加extra字段,此时存放的是new记录

update() ->  Fun = fun(Old) ->     #new{key=Old#old.key,val=Old#old.val,extra=42}     end,

        mnesia:transform_table(old, Fun, record_info(fields, new),new).

 

不改变数据库中的记录名,即使得数据库中存放的是record(old, {key, val, extra}).的元素记录

执行完上面方法后在test同目录下创建个

-module(test1).
-record(old, {key, val, extra}).
-record(new,{key, val, extra}).
-export([test/0,init/0]).

test() ->
 Fun = fun(Old) -> #old{key=Old#new.key,val=Old#new.val,age=Old#new.age}     end,
 mnesia:transform_table(old, Fun, record_info(fields,old),old).

在执行一遍test()方法就OK了。

posted on 2014-08-07 18:05  Vinlan  阅读(281)  评论(0)    收藏  举报

导航