Где найти данные последовательности Netezza?

Информация о последовательностях может быть найдена в представлении _vt_sequence, которое может быть объединено с _v_sequence в _v_sequence.objid = _vt_sequence.seq_id.

запрос выборки последовательности:

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 для каждой последовательности.

1 ответ

Вы можете найти начальное значение в таблице последовательности. К сожалению, netezza не обновляет последнее значение в этой таблице. Ваш ответ

SELECT s.LAST_VALUE
  FROM sequence1 s;

Вы можете найти значение "START WITH", используемое DDL во время создания, выбрав из самого объекта последовательности, как если бы это была таблица, и сославшись на столбец 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)
Другие вопросы по тегам