如果事務異常終止,mnesia 將自動釋放該事務的鎖。
我們在前面已經示範了一些可以用於事務中的函式。下面會列出可在事務中工作的最簡單的
mnesia 函式。重要的是要知道這些函式必須被嵌入到事務中。如果沒有封裝事務(或其他可用來
封裝的 mnesia 作業)存在,這些函式將失敗。
mnesia:transaction(fun) -> |,這
個函式用函式物件 fun 作為單獨的引數執行乙個事務。
mnesia:read() -> transaction abort | recordlist,這個函式
從表 tab 中讀取全部鍵值為 key 的記錄。無論表在**,此函式具有同樣的語義。如果表
的型別是 bag,則 read()可能返回乙個任意長的列表。如果表的型別是 set,則
列表的長度等於一或者為。
mnesia:wread() -> transaction abort | recordlist,該函式
與上面列出的 read/1 函式行為一樣,只是其會獲取乙個寫鎖而不是乙個讀鎖。如果我們執
行乙個讀取一條記錄,修改這條記錄,然後再寫此記錄的事務,那麼立即設定乙個寫鎖會
更有效。 如果我們先呼叫 mnesia:read/1,然後呼叫 mnesia:write/1,那麼執行寫操作時必須
將讀鎖公升級為寫鎖。
mnesia:write(record) -> transaction abort | ok, 這個函式將一條記錄寫
入資料庫中。 record 引數是記錄的乙個例項,此函式返回 ok 或者在錯誤發生時中止事務。
mnesia:delete() -> transaction abort | ok, 這個函式刪除
key 對應的所有記錄。
mnesia:delete_object(record) -> transaction abort | ok, 這個函式刪
除物件標識為 record 的記錄。該函式僅用來刪除表的型別為 bag 的記錄。
Erlang資料庫Mnesia操作
mnesia是一套輕量級的軟實時分布式資料儲存系統,支援冗餘複製和事務,特別適合於儲存離散的erlang資料塊,尤其擅長ram中的資料儲存。初始化資料庫步驟 1.啟動節點,erl mensa dir dir name mynode 2.建立資料庫模式,mnesia create schema nod...
Mnesia資料庫操作整理 1
mnesia資料庫的操作和以前習慣的sql資料庫操作幾乎完全不同,剛開始用很不使用。現將常見的讀寫操作整理於下 1 髒讀 mnesia dirty read tab,key valuelist exit 示例 對於set型別的表,這個操作返回乙個值或者空表,因為set型別表鍵值不可重複。如果對bag...
關於git的基本操作
git原名叫gitlub的乙個 管理與發表的倉庫,git的操作簡單並且非常實用。現在來介紹一些git簡單基礎的操作 對於初次使用git,需要去初始 git init 一下自己的廠庫,然後需要轉殖一下自己 git clone 的倉庫位址到本地資料夾裡 注意 初始乙個檔案只需要在你一直在使用這個檔案時,...