我想創建兩個表使用相同的記錄,兩個不同的名稱,但它只創建其中任何一個或有時會引發異常。不能創建兩個具有不同名稱和使用單個記錄的表,我該如何實現這一點?
以下是從我的記錄文件中的代碼:
-record(account,{acctnum, cnic, name, address,date ,time, balance=0}).
以下是從模塊調用帳戶我的代碼:
-module(accounts).
-compile(export_all).
-include("records.hrl").
start()->
ets:new(current,[named_table,{keypos, #account.cnic}]),
ets:new(savings,[named_table,{keypos, #account.cnic}]).
有時它返回稱爲儲蓄的原子,但有時它提供了以下錯誤:
**異常錯誤:錯誤的參數 in函數ets:new/2 被稱爲ets:new (current,[named_table,{keypos,3}]) 來自帳戶的呼叫:start/0(accounts.erl,line 5)
請確認我是否可以在ets中創建兩個表單一記錄? 如果沒有,那麼我該如何實現它,我試圖創建兩個表,一個用於儲蓄賬戶和其他賬戶,我該如何解決這個問題?
這是因爲@Pascal和@AlexeyKachayev說:你不能創建超過** ONE **名稱相同的表格。如果它是一個「私人」表,那麼每個進程不超過一個,否則總共不超過一個。它與記錄名無關,因爲表元組的內容僅僅是數據。 – rvirding
作爲ETS表格中的元組僅僅是數據的例子,它們甚至不必是相同的大小!只要元素足夠大以包含密鑰,就可以擁有不同數量元素的元組。他們不認爲任何東西給ETS,因此如果他們都有相同的第一個元素,ETS不關心,它只關心密鑰。 – rvirding