Как написать триггер Oracle на основе автоматически увеличиваемого значения?

#oracle #triggers #auto-increment

#Oracle #триггеры #автоматическое увеличение

Вопрос:

У меня есть таблица Oracle со следующими ключами: Идентификатор, имя, DoB, Dept amp; FileNo. Поле ID является первичным ключом с автоматически увеличиваемым значением.

Я хочу написать триггер, чтобы при добавлении строки с именем, DoB amp; Dept поле FileNo получало значение yyyy / xxxx, где ‘гггг’ — это предопределенная строка, а ‘xxxx’ — значение в поле ID.

Как мне это сделать?

Комментарии:

1. Возможно, вам нужен простой вид или материализованный вид.

Ответ №1:

Если это всегда будет идентификатор с некоторым префиксом, то, вероятно, это не должен быть столбец. Если это значение по умолчанию, то триггера, который устанавливается :new.fileno := 'string'||:new.id , должно быть достаточно.

В Oracle нет автоматического увеличения, так что вы, вероятно, имеете в виду последовательность. Если у вас есть триггер, заполняющий это, то это может быть сделано в том же триггере.

Ответ №2:

Вам нужна последовательность для реализации автоматически увеличиваемого значения:

 create sequence seq_file_id start with 1 increment by 1;
  

и триггер в таблице

 CREATE TRIGGER file_trg 
   BEFORE insert 
   ON file_table 
   FOR EACH ROW
BEGIN
      SELECT seq_file_id.NEXTVAL INTO :new.id FROM dual;
      :NEW.fileno := 'yyyy' || :new.id;

END;
/