Mnesia 数据库学习2

添加和移除数据库里的数据

        之前我们创建了三个表cost表,shop表,design表,现在我们想为shop表添加或移除行。 可以像下面这样给shop表添加一行:

add_shop_item(Name, Quantity, Cost) ->
    Row = #shop{item=Name, quantity= Quantity, cost=Cost},
    F = fun() ->
                mnesia:write(Row)
        end,
    mnesia:transaction(F).

start() ->
    mnesia:start(),
    mnesia:wait_for_tables([shop,cost,design], 20000).


        

        列出shop表

        

        然后我们添加一个新行

        

        这里我们可以发现原本orange这里的值被更新了,也就是是在键已经存在的情况下去添加数据,就是跟新这个数据。

        要移除某一行,需要知道该行的对象ID(Object ID,简称OID)。它由表名和主键的值构成。

remove_shop_item(Item) ->
  Oid = {shop, Item},
  F = fun() ->
    mnesia:delete(Oid)
      end,
  mnesia:transaction(F).

        简单粗暴的移除了pear

查询数据

        我们在添加中使用的查询代码如下

demo(select_shop) ->
  do(qlc:q([X || X <- mnesia:table(shop)]));

        这段代码的重点是qlc:q调用,它会把查询(也就是它的参数)编译成一种用于查询数据库的内部格式。把编译后的查询传递给一个名为do()的函数,它会在接近test_mnesia底部的位置 进行定义,负责运行查询并返回结果。为了让这一切能够轻易从erl里调用,我们把它映射到函数demo(select_shop)上。

        对了,如果要用qlc 那么我们就要引入

-include_lib("stdlib/include/qlc.hrl").

        在编译器里面看可能会爆红就像这样

        其实是不影响使用的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值