当前位置: 首页 > 知识库问答 >
问题:

如何在Tarantool中使用自动增量索引?

赖翰
2023-03-14

我做了自动增量索引:

box.space.metric:create_index('primary', {
        parts = {{'id', 'unsigned'}},
        sequence = true,
})

然后我尝试在id字段中传递nil:

metric.id = nil

当我尝试插入此值时,我发现错误:

Tuple field 1 type does not match one required by operation: expected unsigned

自动增量字段必须传递什么值?

第二个问题。如果我使用tarantool集群,实例很少(例如,基于盒式磁带的应用程序),那么它是否会使用自动增量索引?在不同的实例上是否会出现重复密钥的情况?

共有1个答案

骆照
2023-03-14

不能传递nil。当您分配nil时,您擦除字段。使用框。NULL代替。但是更好的是,使用某种集群id,它在集群中表现良好,而不是自动增量,它只在一个节点内工作。

对于集群范围的ID,我可以建议使用UUID或类似ULID(例如https://github.com/moonlibs/id)

 类似资料:
  • 在我与Tarantool的第一步中,我想知道如何做基本的事情。 假设我正在存储以下寄存器: SQL数据库中是否有类似于自动增量主键的内容,因此我不需要枚举索引? 类似于在Tarantool 1.6中根本不指定主索引。 谢谢

  • Tarantool现在有一个内置类型UUID。 如何插入一条记录并使用https://github.com/tarantool/go-tarantool?传递这个字段 现在我有这个: 尝试将UUID作为字符串插入时 指数:

  • 问题内容: 我希望能够以原子方式递增计数器,而我却找不到有关如何执行此操作的参考。 根据评论添加更多信息: 您正在使用GCD吗?不,我没有使用GCD。必须使用队列系统来增加数字似乎过大了。 请 您理解基本的线程安全?是的,否则我不会问原子增量的问题。 这个变量是局部变量吗?没有。 它是实例级别吗? 是的,它应该是单个实例的一部分。 我想做这样的事情: 问题答案: 来自低级并发API: OSAtom

  • 问题内容: 我正在使用Hibernate访问MySQL,并且有一个带有自动递增主键的表。 每次我在表中插入一行时,都不需要指定主键。但是,在插入新行之后,如何立即使用hibernate获取相对主键? 或者我可以只使用jdbc来做到这一点? 问题答案: 保存hibernate实体时,将为您填充该属性。所以如果你有 实际上,我几乎总是在测试中对持久实体的ID进行一次操作,以确保保存有效。

  • 问题内容: 我刚刚使用MySQL查询浏览器创建了一个新表,并注意到在“自动增量列”下有一个勾号。这是如何运作的? 以编程方式添加到数据库时,是否仅添加一个数字,然后数据库会自动将该数字递增? 每次有新用户在我的网站上注册时,我都希望他们的客户ID(仅整数)自动递增,因此我不必尝试随机生成一个唯一的数字。 可以简单地完成吗? 谢谢! 问题答案: 以编程方式添加到数据库时,是否仅添加一个数字,然后数据

  • 我想在tarantool中使用数组位。我需要类似redis的操作:setbit、getbit和bitCount。狼蛛有可能吗?