在 tarantool 中获取 box.sequence 的当前值
get curren value of box.sequence in tarantool
我得到序列电流值3
localhost:3401> box.sequence.S:next()
---
- 3
...
我在对象中找不到当前值
localhost:3401> box.sequence.S
---
- step: 1
id: 1
min: 1
cache: 0
uid: 1
max: 9223372036854775807
cycle: false
name: S
start: 1
...
如何获取当前值?在文档中找不到任何方法。
如您所见,您的序列 S
有 id=1
有一个系统space box.space._sequence_data
,它有所有序列的当前值。您需要做的只是 select 来自 space 的序列 ID:box.space._sequence_data:select(1)
.
例如,my_seq
是我数据库中的第 4 个序列。
tarantool> my_seq = box.schema.sequence.create('MySeq', {start=111})
---
...
tarantool> box.space._sequence_data:select(my_seq.id)
---
- []
...
tarantool> my_seq:next()
---
- 111
...
tarantool> box.space._sequence_data:select(my_seq.id)
---
- - [4, 111]
如您所见,在创建后 _sequence_data
没有任何关于新序列的详细信息,直到第一次使用 my_seq:next()
初始化序列。
如您所见,box.space._sequence_data:select(my_seq.id)
returns 包含序列号和当前值的元组。
请注意此方法缺乏保证。复制存在一些问题。
在2.4.1 sequence:currval()
中引入:https://github.com/tarantool/tarantool/issues/4752
我得到序列电流值3
localhost:3401> box.sequence.S:next()
---
- 3
...
我在对象中找不到当前值
localhost:3401> box.sequence.S
---
- step: 1
id: 1
min: 1
cache: 0
uid: 1
max: 9223372036854775807
cycle: false
name: S
start: 1
...
如何获取当前值?在文档中找不到任何方法。
如您所见,您的序列 S
有 id=1
有一个系统space box.space._sequence_data
,它有所有序列的当前值。您需要做的只是 select 来自 space 的序列 ID:box.space._sequence_data:select(1)
.
例如,my_seq
是我数据库中的第 4 个序列。
tarantool> my_seq = box.schema.sequence.create('MySeq', {start=111})
---
...
tarantool> box.space._sequence_data:select(my_seq.id)
---
- []
...
tarantool> my_seq:next()
---
- 111
...
tarantool> box.space._sequence_data:select(my_seq.id)
---
- - [4, 111]
如您所见,在创建后 _sequence_data
没有任何关于新序列的详细信息,直到第一次使用 my_seq:next()
初始化序列。
如您所见,box.space._sequence_data:select(my_seq.id)
returns 包含序列号和当前值的元组。
请注意此方法缺乏保证。复制存在一些问题。
在2.4.1 sequence:currval()
中引入:https://github.com/tarantool/tarantool/issues/4752