哪里可以找到Netezza序列数据?

时间:2016-03-11 08:38:31

标签: sequence netezza

有关序列的信息可以在 _vt_sequence 视图中找到,该视图可以与_v_sequence.objid = _vt_sequence.seq_id上的 _v_sequence 结合使用。

序列提取查询:

select vs.* , vts.*
from  _v_sequence vs join _vt_sequence vts on vs.objid = vts.seq_id;

以下查询生成的值:

OBJID
SEQNAME
OWNER
CREATEDATE
OBJTYPE
OBJCLASS
OBJDELIM
DATABASE
OBJDB
SCHEMA
SCHEMAID
SEQ_ID
DB_ID
DATA_TYPE
MIN_VALUE
MAX_VALUE
CYCLE
INCREMENT
CACHE_SIZE
NEXT_CACHE_VAL
FLAGS

示例CREATE SEQUNCE:

CREATE SEQUENCE TEMP_PPC_SEQ AS BIGINT
START WITH 1
INCREMENT BY 2
NO MINVALUE
MAXVALUE 2147483647
NO CYCLE;

START 序列没有任何价值。 帮助获取每个序列的START值。

2 个答案:

答案 0 :(得分:1)

您可以在顺序表中找到起始值。不幸的是,netezza不会更新此表中的最后一个值。您的答案是

SELECT s.LAST_VALUE
  FROM sequence1 s;

答案 1 :(得分:0)

您可以在创建时找到DDL使用的“START WITH”值,方法是从序列对象本身中进行选择,就像它是一个表一样,并引用LAST_VALUE列。

不要被列名混淆。 LAST_VALUE不报告序列分配的最后一个值。下面的例子说明了这一点。

TESTDB.ADMIN(ADMIN)=> create sequence test_seq_1 as bigint start with 12345;
CREATE SEQUENCE

TESTDB.ADMIN(ADMIN)=> create temp table seq_out as select next value for test_seq_1 from _v_vector_idx a cross join _v_vector_idx b;
INSERT 0 1048576

TESTDB.ADMIN(ADMIN)=> select * from test_seq_1;
 SEQUENCE_NAME | LAST_VALUE | INCREMENT_BY |      MAX_VALUE      | MIN_VALUE | CACHE_VALUE | LOG_CNT | IS_CYCLED | IS_CALLED | DATATYPE
---------------+------------+--------------+---------------------+-----------+-------------+---------+-----------+-----------+----------
 TEST_SEQ_1    |      12345 |            1 | 9223372036854775807 |         1 |      100000 |       1 | f         | f         |       20
(1 row)

TESTDB.ADMIN(ADMIN)=> select next value for test_seq_1;
 NEXTVAL
---------
 1060921
(1 row)