• mnesia怎样改动表结构


    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

  • 相关阅读:
    第五章:数组 结构体 和联合体
    第四章:用户自定义和枚举数据类型
    第三章:systemverilog文本值和数据类型
    阶段一:读几本经济学书
    第二章:systemverilog声明的位置
    数据结构-B树
    UDP的崛起
    vim使用
    sudo apt-get update
    计算机组成原理——浮点数表示方法
  • 原文地址:https://www.cnblogs.com/llguanli/p/8606946.html
Copyright © 2020-2023  润新知