#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;
/