Как написать триггер Oracle, основанный на автоматическом увеличении значения? - PullRequest
2 голосов
/ 09 июня 2011

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

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

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

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

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

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

1 голос
/ 09 июня 2011

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

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;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...