Oracle auto_increment

У СУБД MySQL є можливість використовувати властивістьauto_increment для числового поля - воно автоматично додає одиницю числовому полю для наступного рядка при вставці. Таким чином, система самостійно генерує унікальний ідентифікатор для запису. В Oracle цю функціональність можна реалізувати за допомогою тригера (раніше версії 12с) або властивості IDENTITY (з версії 12c).

Тригер (до Oracle 12c)

В даному прикладі наша таблиця буде називатися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 до 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.

IDENTITY (Oracle 12c і пізніші)

Починаючи з версії Oracle 12c, є можливість створити таблицю з властивістю поля IDENTITY, яке є аналогом auto increment або autonumber.

Приклад створення таблиці:

CREATE TABLE ai_table ( id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), name VARCHAR(512) NOT NULL, UNIQUE (id, name) )

* деid - поле звластивістю автоінкремента з кроком1 та початковим значенням1.