[clesed] ORACLE:>> ALTER SEQUENCE ?
1) в принципе вместо курр_вал можно брать user_sequences.last_number, он по крайней мере уж точно не меньше, что уже гут.
2) а вот с автоматической модификацией пока засада... пересоздание сиквенсов не катит, т.к. слетят все гранты.
2. Обычно делают так: если нужно значение m, а сейчас n. То делают:
alter sequence seq increment by m-n
/
select seq.nextval from dual
/
alter sequence seq increment by oldvalue
/
1. select sequence.curval from dual. Если из последовательности уже выбирали после старта базы.
со стартом базы этот селект никак не связан.. он отработает только в том случае, если с сиквенсом "работали" в рамках текущей сессии.
2. Обычно делают так: если нужно значение m, а сейчас n. То делают:а вот это круто.. чеж я сам не догадался-то?
alter sequence seq increment by m-n
/
select seq.nextval from dual
/
alter sequence seq increment by oldvalue
/
PS
пока вместо curr_val c user_sequences.last_number поработаю.
кто-то не согласен с тем, что select sequence.curval from dual отработает ТОЛЬКО В ТОМ СЛУЧАЕ, если сиквенс дергали в рамка текущей сессии и выругается если не дергали?
сиквенсы лочаться на уровне защелок, с транзакциями и сессиями не связаны, для всех сессий select sequence.curval from dual - даст одно и тоже значение.
To use or refer to the current sequence value of your session, reference seq_name.CURRVAL. CURRVAL can only be used if seq_name.NEXTVAL has been referenced in the current user session (in the current or a previous transaction).
что ему не подходит.
To : кстати а почему не подходит? Ну создашь ты следующее значение даже если оно вдруг будет больше требуемого нигде в приложении оно у тебя не использовалось, а инкремент может быть и отрицательным, т.ч. можно легко вернуть старое.
Оставить комментарий
macrophage
Всем привет.Появилась необходимость модифицировать текущее значение сиквенса. В связи с этим вознокло 2 вопроса, мб кто знает?
1) возможно ли получить текущее значение сиквенса не применяя предварительно к нему nextval ? (значения cache_size<>'1' и increment_by='1')
2) ну и собственно какой командой модифицируется текущее значение сиквенса? модифицируется ли? ( чет поиск не помог )
Спасибо.