You can use sequences with the SQL API. Sequences provide for an arbitrary number of increasing or decreasing integers that persist across database accesses. Use sequences if you need to create unique values in a highly efficient and persistent way.
To create and access a sequence, you must use SQL functionality that is unique to the BDB SQL interface; no corresponding functionality exists in SQLite. The sequence functionality is implemented using SQLite function plugins, as such it is necessary to use the 'select' keyword as a prefix to all sequence APIs.
The SQL API sequence support is a partial implementation of the sequence API defined in the SQL 2003 specification.
The following sections describe the BDB SQL interface sequence API.
Creates a new sequence. A name is required, all other parameters are optional. For example:
SELECT create_sequence("my_sequence", "start", 100, "incr", 10, "maxvalue", 300);
This creates a sequence called my_sequence
starting at 100 and incrementing by 10 until it reaches
300.
SELECT create_sequence("my_decr_sequence", "incr", -100, "minvalue", -10000);
This creates a sequence call my_decr_sequence
starting at 0 and decreasing by 100 until it reaches
-10000.
Parameters are:
name
Required parameter that provides the name of the sequence. It is an error to create a sequence with another name that is currently in use within the database.
start
The starting value for the sequence. If this
parameter is not provided then
0
is used.
minvalue
The lowest value generated by the sequence. If this parameter is not provided and a decrementing sequence is created, then INT64_MIN is used.
maxvalue
The largest value generated by the sequence. If this parameter is not provided and an incrementing sequence is created, then INT64_MAX is used.
incr
The amount the sequence is incremented for each
get operation. This value can be positive or
negative. If this parameter is not provided,
then 1
is used.
cache
Causes each handle to keep a cache of sequence values. So long as there are values available in the cache, retrieving the next value is cheap and does not lead to contention between handles.
Sequences with caches cannot be created or dropped within an explicit transaction.
Operations on caching sequences are not transactionally protected. That is, a rollback will not result in a value being returned to the sequence.
Sequences with caches do not support the
currval
function.
The parameter following the cache parameter must be an integer value specifying the size of the cache.
Retrieves the next value from the named sequence. For example:
SELECT nextval("my_sequence");
Retrieves the last value that was returned from the named sequence. For example:
SELECT currval("my_sequence");