gpt4 book ai didi

Erlang ets 插入多个表

转载 作者:行者123 更新时间:2023-12-01 15:49:59 26 4
gpt4 key购买 nike

我是 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中的值?

同样是delete,如果ets:delete(table_cp,V)失败,我要重新插入值吗?

请帮忙。

最佳答案

您要的是交易。 ETS 不支持交易。如果第一次插入不成功,即使您没有在另一个表中插入该值,您也不能保证如果第一次插入成功则插入第二个值,因为这两次写入之间可能会发生某些事情,例如该进程可能会死亡。

如需交易请考虑mnesia它建立在 ETS 之上,为交易提供支持,甚至跨分布式 Erlang 节点。

这完全取决于您需要在多大程度上依赖插入到两者或两者都不插入的值。如果您的应用程序可以在仅将值插入其中一个表的情况下存活(正常工作),或者如果它能够在插入不正确的情况下更正该值,那么您所描述的故障的编程处理可能会正常工作。否则 ETS 就不是正确的数据结构。

关于Erlang ets 插入多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37227259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com