昨天在erlang下弄了个数据库,当更新数据的时候,发现了一些些问题。数据类似下面的记录:
-record(counter, {
type,
value
} ) .
-record(class, {
name,
id}).
抱歉使用C++的高亮方式,没有erlang的高亮方式【换了个插件,支持了。】。
counter用来记录class中的数量,class中有两个数据段,名字和id。因为考虑一个名字和一个id对应,所以创建表的时候使用{type,set},{index, [id]}来设置。当我更新数据的时候,如果名字相同的话,后面更新的id会将前一个覆盖掉。比如{“张三”,02},{“张三”,04},记录完之后会只有一个{“张三”,04},很显然,后来的覆盖了之前存在的。但如果将class的结构编程这样:
-record(class,{id,name}).
结果便对了,很显然,mnesia使用数据记录的第一个来表示数据是否相同。而不是数据表设置中的{index,[id]}。
我使用的erlang版本是5.6.5,并不是最新的,在最新的之中是否还是这样就不清楚了。
学习,记录。加油哦
谢谢,前几天服务器更新,无法管理。中间断了几天