ホームページ データベース mysql チュートリアル erlang mnesia数据库设置主键自增

erlang mnesia数据库设置主键自增

Jun 07, 2016 pm 03:11 PM
erlang 主キー データベース 自己増加 設定

Mnesia是erlang/otp自带的分布式数据库管理系统。mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足。mnesia数据表没有主键自增的功能,但在mnesia函数中有一个自增函数可以用来生成自增的id,在后面的内容将讲述如何实现主键自增

Mnesia是erlang/otp自带的分布式数据库管理系统。mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足。mnesia数据表没有主键自增的功能,但在mnesia函数中有一个自增函数可以用来生成自增的id,在后面的内容将讲述如何实现主键自增的功能。

参照SQLite的做法,就是在数据库中单独建立一个的sqlite_sequence表来做其他表的自增索引表。同样,我们也创建这样一个表erlang_sequence,用来索引其他表的自增id,看似麻烦,效果还是很理想。

-module(m).
-export([init/0, reg/2]).
-record(user, {id, name, age}).
-record(erlang_sequence, {name, seq}).%自增索引表,维护其他表的自增id

init() ->
	mnesia:create_schema([node()]),
	mnesia:start(),
	mnesia:create_table(erlang_sequence, [{attributes, record_info(fields,
	  erlang_sequence)} , {type,set}, {disc_copies, [node()]} ]),
	mnesia:create_table(user, [{attributes, record_info(fields, user)} ,
	  {type,set}, {disc_copies, [node()]} ]),
	ok.

reg(Name, Age) ->
	F = fun() ->
		UserId = mnesia:dirty_update_counter(erlang_sequence, user, 1),
		User = #user{id = UserId, name = Name, age = Age },
		mnesia:write(User)
	end,
	mnesia:transaction(F),
	ok.
ログイン後にコピー

运行代码:

D:\>erl -mnesia dir '"mnesia"'
Eshell V5.10.2  (abort with ^G)
1> c(m).
{ok,m}
2> m:init().
ok
3> m:reg("xiaomin",18).
ok
4> m:reg("xiaohong",17).
ok
5> tv:start().
ログイン後にコピー

Mnesia数据库视图:

erlang mnesia数据库设置主键自增



このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Weiboで中央にウォーターマークを設定する方法_Weiboで中央にウォーターマークを設定する方法 Weiboで中央にウォーターマークを設定する方法_Weiboで中央にウォーターマークを設定する方法 Mar 29, 2024 pm 03:31 PM

Weiboで中央にウォーターマークを設定する方法_Weiboで中央にウォーターマークを設定する方法

iPhoneでサイレントモードが機能しない:修正 iPhoneでサイレントモードが機能しない:修正 Apr 24, 2024 pm 04:50 PM

iPhoneでサイレントモードが機能しない:修正

Weibo でスケジュール公開を設定する方法_Weibo でスケジュール公開を設定する方法のチュートリアル Weibo でスケジュール公開を設定する方法_Weibo でスケジュール公開を設定する方法のチュートリアル Mar 29, 2024 pm 03:51 PM

Weibo でスケジュール公開を設定する方法_Weibo でスケジュール公開を設定する方法のチュートリアル

Damai でチケットを入手するためのカウントダウンを設定する方法 Damai でチケットを入手するためのカウントダウンを設定する方法 Apr 01, 2024 pm 07:01 PM

Damai でチケットを入手するためのカウントダウンを設定する方法

Douyin の再生が自動的に終了するように設定するにはどうすればよいですか?再生プロセスが自動的に終了するのはなぜですか? Douyin の再生が自動的に終了するように設定するにはどうすればよいですか?再生プロセスが自動的に終了するのはなぜですか? Apr 01, 2024 pm 12:06 PM

Douyin の再生が自動的に終了するように設定するにはどうすればよいですか?再生プロセスが自動的に終了するのはなぜですか?

Weibo でグループ チャット バブルを設定する方法_Weibo でグループ チャット バブルを設定する方法 Weibo でグループ チャット バブルを設定する方法_Weibo でグループ チャット バブルを設定する方法 Mar 30, 2024 pm 01:31 PM

Weibo でグループ チャット バブルを設定する方法_Weibo でグループ チャット バブルを設定する方法

Kuaishouでフォローリクエストリマインダーを設定する方法 Kuaishouでフォローリクエストリマインダーを設定する方法 Mar 29, 2024 am 09:26 AM

Kuaishouでフォローリクエストリマインダーを設定する方法

Google マップ モバイル版で 3D マップを設定する方法 Google マップ モバイル版で 3D マップを設定する方法 Apr 01, 2024 pm 04:26 PM

Google マップ モバイル版で 3D マップを設定する方法

See all articles