erlangmnesia数据库设置主键自增
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了erlangmnesia数据库设置主键自增,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1566字,纯文字阅读大概需要3分钟。
内容图文
![erlangmnesia数据库设置主键自增](/upload/InfoBanner/zyjiaocheng/534/35fa7072c82a4801bdfc63c3ed54aed7.jpg)
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(). <0.92.0>0.92.0>
Mnesia数据库视图:
内容总结
以上是互联网集市为您收集整理的erlangmnesia数据库设置主键自增全部内容,希望文章能够帮你解决erlangmnesia数据库设置主键自增所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。