【问题标题】:How to create table in erlang mnesia with multiple unique columns?如何在 erlang mnesia 中创建具有多个唯一列的表?
【发布时间】:2013-07-03 06:26:22
【问题描述】:

类似于 sql 中的 unique 列。有什么建议吗?

【问题讨论】:

    标签: erlang mnesia


    【解决方案1】:

    你的问题很“开放”,所以我试图弄清楚你想做什么。

    如果您需要添加一个不是主键的列来存储诸如唯一 ID 之类的内容,您可以在其中存储一个 erlang 引用 (Ref = make_ref())。这几乎可以保证是唯一的(循环大约 2^82)。我不知道多节点中的行为是什么,但是如果出现问题,可以使用 {node(),make_ref()} 标记记录。

    如果您想通过几个键的组合创建唯一记录:K1,K2,K3,您可以使用元组 {K1,K2,K3} 作为表的键并使用集合或有序集合。但是查看表格会更复杂

    如果是其他问题,一些补充信息可能会有所帮助。

    【讨论】:

    • 非常感谢,非常有帮助。
    • 当一个节点重新启动时,make_ref() 不会从头开始(即返回与上次启动节点时相同的值序列)?
    • 谢谢Paul的这番话,我没有意识到节点重启时VM返回的ref的顺序是一样的。所以用它来识别永久记录确实是个坏主意。所以杰森,你应该为此建立一个“足够好”的随机值......关于这个有一个讨论,但我直到现在才找到它。
    猜你喜欢
    • 2011-10-12
    • 2014-06-06
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2021-11-20
    • 2012-03-22
    相关资源
    最近更新 更多