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了。
浙公网安备 33010602011771号