如何在erlang mnesia中创建具有多个唯一列的表?

如何在erlang mnesia中创建具有多个唯一列的表?,erlang,mnesia,Erlang,Mnesia,类似于sql中的unique列。有什么建议吗?你的问题很“开放”,所以我想知道你想做什么 如果需要添加非主键的列来存储诸如唯一ID之类的内容,可以在其中存储erlang引用(Ref=make_Ref())。这几乎保证是唯一的(循环大约2^82)。我不知道multinode中的行为是什么,但是如果有问题,可以用{node(),make_ref()}标记记录 如果希望通过组合几个键来创建唯一记录:K1、K2、K3,则可以使用元组{K1、K2、K3}作为表的键,并使用集合或有序集合。但调查一下表格会更

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

你的问题很“开放”,所以我想知道你想做什么

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

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


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

非常感谢,非常有用。当节点重新启动时,不会使_ref()从头开始(即返回与上次启动节点时相同的值序列)?感谢Paul的这句话,我没有意识到,当节点重新启动时,VM返回的ref序列是相同的。因此,用它来识别永久记录确实是个坏主意。所以Jason,你应该为这个建立一个“足够好”的随机值。。。关于这个有一个讨论,但我直到现在才发现。