кажется, ошибка в сафари / WebKit. возможно этот , или любой из этих . попытайтесь обновить свое сафари. если нет никакой более свежей стабильной версии, попробуйте 4 беты.
Если ID - это имя вашего столбца PK, а PK_SEQ - имя вашей последовательности:
Найдите значение самого высокого PK по SELECT MAX (ID) FROM tableName
Найдите значение следующего PK_SEQ по ВЫБЕРИТЕ PK_SEQ.NEXTVAL FROM DUAL
Поднять последовательность с помощью SELECT PK_SEQ.NEXTVAL FROM DUAL
Сбросить значение приращения последовательности в 1 с помощью ALTER SEQUENCE PK_SEQ УВЕЛИЧЕНИЕ НА 1
Все это предполагает, что у вас нет новых вставок в таблицу, пока вы это делаете ...
Короче говоря, играйте:
-- Current sequence value is 1000
ALTER SEQUENCE x INCREMENT BY -999;
Sequence altered.
SELECT X.NEXTVAL FROM DUAL;
1
ALTER SEQUENCE x INCREMENT BY 1;
Sequence altered.
Вы можете получить максимальное значение последовательности, используемое в вашей таблице, выполнить математические вычисления и соответствующим образом обновить последовательность.
В некоторых случаях вам может быть проще просто получить текущее максимальное значение, а затем
drop sequence x;
create sequence x start with {current max + 1};
Приложение будет сломано после того, как вы выполните сброс. Но это помешает кому-либо вставлять строки в течение этого периода, а создание последовательности происходит быстро. Убедитесь, что вы воссоздали все гранты в последовательности, поскольку они будут отброшены, когда последовательность будет. И вы можете захотеть вручную перекомпилировать любой plsql, который зависит от последовательности.