Создание определенной последовательности значений в Oracle - PullRequest
0 голосов
/ 01 октября 2018

Мне нужно создать последовательность оракула с конкретными значениями

FOUR0001, FOUR0002, FOUR0003 .....

приращение должно быть в порядке.

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Вы можете создать последовательность:

create sequence SEQ_NAME ...;

, а затем создать триггер для автоматической подачи поля:

CREATE OR REPLACE TRIGGER INS_TABLENAME
  before insert on TABLENAME
  for each row

BEGIN

  if :new.FIELD_NAME is null then
    :new.FIELD_NAME := 'FOUR'||lpad(SEQ_NAME.nextval,4,'0');
  end if;

END;
0 голосов
/ 01 октября 2018

Я создал последовательность, начинающуюся с 210 (потому что у меня уже есть 209 записей), затем создал триггер ниже

CREATE OR REPLACE trigger BIU_FRS  
  before insert or update on FOURNISSEUR             
  for each row 
begin  
  if :NEW.FRS_NUM is null then
    select ('FOUR'||lpad(four_seq.nextval,4,'0')) into :NEW.FRS_NUM from dual;
  end if;
  if inserting then
        :new.created    := localtimestamp;
        :new.created_by := nvl(wwv_flow.g_user,user);
    end if;
    :new.updated    := localtimestamp;
    :new.updated_by := nvl(wwv_flow.g_user,user);
end;

спасибо @Kaushik Nayak и @Diego Souza

0 голосов
/ 01 октября 2018

Сначала создайте простую последовательность

create sequence my_seq ; --start with 1 increment by 1 

В коде / таблице приложения, где вы используете последовательность для хранения данных, используйте что-то вроде

INSERT INTO yourtab (col1) VALUES( 'FOUR'||lpad(my_seq.nextval,4,'0'));
...