November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Tuesday, November 8th, 2005 06:11 pm
У sequence нельзя сбросить START WITH. Зато можно удалить sequence совсем и создать заново.
Но при удалении отваливаются триггеры, которые использовали этот sequence.
Поэтому после создания sequence надо не забыть перекомпилировать триггер.
Вот такая загогулина, панимаишь..
Tags:
Wednesday, November 9th, 2005 10:53 am (UTC)
В таком случае триггер нужно писать так

BEGIN
IF :new.id IS NULL OR :new.id = 0 THEN
SELECT SEQUENCE_NAME.nextval INTO foo FROM dual;
:new.id := foo;
END IF;
END;

тогда сиквенс будет генерироваться только в том случае, когда значение первичного ключа
отсутствует либо равно 0.

В Infomix-е для автоинкрементируемых полей такое поведение было по-умолчанию.
Wednesday, November 9th, 2005 11:03 am (UTC)
Ага, спасибо за идею, учту.
Только это все равно не спасает от проблемы со сбросом счетчика в начальное состояние. Хотя оно, на самом деле, особо и не нужно..