码迷,mamicode.com
首页 > 其他好文 > 详细

mnesia如何修改表结构

时间:2014-07-01 07:18:35      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   http   使用   数据   

mnesia创建的时候需要指定表record结构,如果定义的record结构修改了,就要更新数据的表结构,否则mnesia无法正常读取和写入数据。

我们最开始是这样定义结构的

-record(person, {name, age}).

然后这样建表

mnesia:create_table(person, [{disc_only_copies, nodes()}, {attributes, record_info(fields,person)}]).


有一天我们改变了这个person结构

-record(person, {name, age, money}).

我们还可以读出mnesia的数据,但是不能匹配到现在的person结构了

> mnesia:dirty_read(person, lucy).
[{person,lucy,1}]

而且我们无法再写入数据

> mnesia:dirty_write(person, #person{name = lily, age = 2, money = 0}).
** exception exit: {aborted,{bad_type,#person{name=lily,age=2, money=0}}}
     in function  mnesia:abort/1 (mnesia.erl, line 309)

但是我们还想要使用这个数据库,可以这样修改数据库

Fun = fun(X)  ->
  case X of
      {person, Name, Age} ->
           {person, Name, Age, 0};
       _ ->
           X
     end
end,
NewAttr = [name, age, money],
mnesia:transform_table(person, Fun, NewAttr, person).


参考:

http://blog.csdn.net/mycwq/article/details/30101659

mnesia如何修改表结构,布布扣,bubuko.com

mnesia如何修改表结构

标签:des   style   blog   http   使用   数据   

原文地址:http://blog.csdn.net/mycwq/article/details/30101659

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!