【发布时间】:2016-09-10 16:03:49
【问题描述】:
我是 Erlang 新手。我有一个关于 ets 表的问题。
我有两个 ets 表,我需要从两个表中插入或删除值。
insert(V) ->
ets:insert(table_test,V),
ets:insert(table_cp,V).
delete(V)->
ets:delete(table_test,V),
ets:delete(table_cp,V).
如何保证操作成功或失败?
比如insert操作,如果ets:insert(table_cp,V)有问题,要不要把talbe_test的值删掉?
同样删除,如果ets:delete(table_cp,V)失败,我要重新插入值吗?
请帮忙。
【问题讨论】:
-
你说你是 Erlang 新手,但你已经决定避开 Mnesia?正如@Amiramix 的回答所指出的,Mnesia 是拥有事务语义的最简单方法。它是 Erlang 内置的,因此没有额外的依赖项,并且可以配置为仅在内存中(无文件系统访问),如果这是您想要完成的。