последовательность поля идентификатора не синхронизирована c в oracle бд - PullRequest
1 голос
/ 28 мая 2020

Когда я создаю таблицу с полем pk в качестве идентификатора и запускаю сценарий с тестовыми строками данных, последовательность не синхронизируется, например:

ID NUMBER(11) GENERATED BY DEFAULT ON NULL AS IDENTITY, CONSTRAINT test_id_pk PRIMARY KEY(ID),
text VARCHAR2(20)
);

INSERT INTO test VALUES(1,'asd');
INSERT INTO test VALUES(2,'asd');
INSERT INTO test VALUES(3,'asd');
INSERT INTO test VALUES(4,'asd');
INSERT INTO test VALUES(5,'asd');
INSERT INTO test VALUES(6,'asd');

тогда, когда я делаю

SELECT "autogenerated sequence".nextval FROM DUAL;

результат: 1

есть ли способ синхронизировать c все последовательности? на данный момент мне нужно изменить поля pk моего тестового скрипта на NULL, чтобы последовательность не рассинхронизировалась c

1 Ответ

1 голос
/ 28 мая 2020

Используйте следующую команду для синхронизации c последовательности с существующими данными:

ALTER TABLE test MODIFY id
GENERATED BY DEFAULT ON NULL AS IDENTITY (START WITH LIMIT VALUE);

Предложение START WITH LIMIT VALUE установит для последовательности самое высокое значение существующих данных в столбце плюс один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...