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.