Увеличить строку в столбце с последовательностью оракула

0

Мне нужна помощь в упорядочивании уже заполненной таблицы строковыми данными. Таким образом, у меня есть идентификатор COMP_ID,

TC0001 TC0002 TC0003

Поэтому, когда пользователь вводит новую строку, он должен начинаться с TC0004 и т.д. Я только начинаю оракул, и я не знаю, как подойти к этой последовательности. насколько я знаю, последовательность работает только с типом данных int.

Теги:

1 ответ

0

Вы должны сделать что-то вроде этого:

CREATE SEQUENCE CREATE SEQUENCE yourtable_sequence
START WITH 1
INCREMENT BY 1
NOCACHE
NOCYCLE;

CREATE OR REPLACE TRIGGER yourtable_trigger  
BEFORE INSERT ON yourtable
FOR EACH ROW


BEGIN
  SELECT 'TC000' || to_char(yourtable_sequence.NEXTVAL)
  INTO   :new.COMP_ID
  FROM   dual;
END;
  • 0
    С использованием такой последовательности все в порядке, но я думаю, что OP ожидал бы, что 000 s будут заменены числом из последовательности, иначе это приведет к значениям, таким как TC00010 , TC00011 , ... TC000100 и т. Д. Поэтому вместо этого я ' d предлагает создать последовательность с максимальным значением 9999 и установить столбец с помощью выражения 'TC' || TO_CHAR(yourtable_sequence.NEXTVAL,'fm0000') .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню