2017-02-27 3 views
0
iex(6)> :mnesia.table_info(:users, :attributes) 
[:id, :email, :foo, :inserted_at, :updated_at] 

iex(7)> :mnesia.table_info(:users, :index)  
[3] 

iex(8)> :mnesia.add_table_index(:users, :email) 
{:aborted, {:already_exists, :users, 3}} 

私はTabが最初のインデックスだが、なぜインデックスは2ではなく3であるのだろうか?インデックスはゼロではなく1を基準にしていますか?この位置に私の経絡索引があるのはなぜですか?

答えて

4

メネシアのテーブルには、レコードのような形式のタプルが含まれています。タプルは:email値用に作成されたインデックスが作成される1-基づいているため

Index | 1 | 2 | 3 | 4 |  5  |  6  | 
Name | :users | :id | :email | :foo | :inserted_at | :updated_at | 

:にマップ

{:users, 1, "[email protected]", "foo", {2016, 12, 24}, {2016, 12, 31}} 

:あなたの例では:usersテーブルに格納されたタプルは次のようになりますタプルの位置3にあります。

+0

クールなので、erlangタプルは1つのインデックスを使用しています。ありがとう – blu

関連する問題