Как создать поле со свойством auto_increment в Oracle

В СУБД MySQL есть удобное свойство для поля — auto_increment. Его смысл заключается в том, что при добавлении новой записи, создается числовой индекс с добавлением единицы. Таким образом система сама заполняет уникальный идентификатор для поля.

В Oracle такого свойства нет, но функциональность можно реализовать при помощи триггера.

Допустим, наша таблица называется ai_table, а поле, которому необходимо добавить возможность auto_increment — id.

Создаем последовательность следующей SQL-командой:

CREATE SEQUENCE sq_ai_table
START WITH 1 
INCREMENT BY 1 
NOMAXVALUE;

* в данном примере создана последовательность с названием sq_ai_table. Начинается последовательность с 1 и каждый шаг бужет добавлять тоже 1.

Теперь создаем сам триггер:

CREATE OR REPLACE TRIGGER tr_ai_table before INSERT ON ai_table FOR each row
BEGIN
  SELECT sq_ai_table.NEXTVAL
  INTO :new.id
  FROM dual;
END;

* как видим, создан триггер с названием tr_ai_table для таблицы ai_table. При каждой INSERT команде будет браться число из нашей созданной последовательности и подставляться в поле id.

#Базы данных #Сервера
Фотография автора
Была ли полезна вам эта инструкция?

Да            Нет