关于mnesia基本操作轨范

关于mnesia基本操作规范

 

如果事务异常终止,Mnesia 将自动释放该事务的锁。

我们在前面已经示范了一些可以用于事务中的函数。下面会列出可在事务中工作的最简单的

Mnesia 函数。重要的是要知道这些函数必须被嵌入到事务中。如果没有封装事务(或其他可用来

封装的 Mnesia 作业)存在,这些函数将失败。

mnesia:transaction(Fun) -> {aborted, Reason} |{atomic, Value},这

个函数用函数对象 Fun 作为单独的参数执行一个事务。

mnesia:read({Tab, Key}) -> transaction abort | RecordList,这个函数

从表 Tab 中读取全部键值为 Key 的记录。无论表在哪里,此函数具有同样的语义。如果表

的类型是 bag,则 read({Tab, Key})可能返回一个任意长的列表。如果表的类型是 set,则

列表的长度等于一或者为[]。

mnesia:wread({Tab, Key}) -> transaction abort | RecordList,该函数

与上面列出的 read/1 函数行为一样,只是其会获取一个写锁而不是一个读锁。如果我们执

行一个读取一条记录,修改这条记录,然后再写此记录的事务,那么立即设置一个写锁会

更有效。 如果我们先调用 mnesia:read/1,然后调用 mnesia:write/1,那么执行写操作时必须

将读锁升级为写锁。

mnesia:write(Record) -> transaction abort | ok, 这个函数将一条记录写

入数据库中。 Record 参数是记录的一个实例,此函数返回 ok 或者在错误发生时中止事务。

mnesia:delete({Tab, Key}) -> transaction abort | ok, 这个函数删除

Key 对应的所有记录。

mnesia:delete_object(Record) -> transaction abort | ok, 这个函数删

除对象标识为 Record 的记录。该函数仅用来删除表的类型为 bag 的记录。