Вставка данных вручную в таблицу (таблицы) с первичным ключом, заполненным последовательностью - PullRequest
1 голос
/ 23 сентября 2008

У меня есть несколько таблиц, которые используют столбец триггера / последовательности для имитации auto_increment на своих первичных ключах, который какое-то время прекрасно работал.

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

Это изменение приводит к сбою большинства тестов, так как процесс тестирования устанавливает схему с нуля, а последовательности возвращают значения, которые уже существуют в таблицах. Есть ли какой-либо способ программно сказать «Обновить последовательности до максимального значения в столбце» или мне нужно написать целый скрипт вручную, который обновляет все эти последовательности, или я могу / я должен изменить триггер, который заменяет нулевое значение на Последовательность для некоторых, как это проверить (хотя я думаю, что это может вызвать проблему с таблицей мутаций)?

Ответы [ 3 ]

1 голос
/ 23 сентября 2008

Вы можете сгенерировать сценарий для создания последовательностей с необходимыми начальными значениями (на основе их существующих значений) ....

SELECT 'CREATE SEQUENCE '||sequence_name||' START WITH '||last_number||';'
FROM   ALL_SEQUENCES
WHERE  OWNER = your_schema

(если я правильно понял вопрос)

1 голос
/ 27 сентября 2008

Вот простой способ обновить значение последовательности - в этом случае установите последовательность на 1000, если она в настоящий момент равна 50:

alter sequence MYSEQUENCE increment by 950 nocache;
select MYSEQUENCE_S.nextval from dual;
alter sequence MYSEQUENCE increment by 1;

Благодарность создателям PL / SQL Developer за включение этой техники в их инструмент.

0 голосов
/ 23 сентября 2008

Как часть вашей схемы перестроения, почему бы не удалить и заново создать последовательность?

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