Oracle auto_increment

MySQL има способността да използва свойствотоauto_increment за числово поле - автоматично добавя единица към числовото поле за следващия ред при вмъкване. Така системата самостоятелно генерира уникален идентификатор за записа. В Oracle тази функционалност може да бъде реализирана с помощта на тригер (преди 12c) или свойството IDENTITY (от 12c).

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

В този пример нашата таблица ще се наричаai_table, а полето, към което трябва да добавим възможността за auto_increment ще бъдеid.

Създайте последователност със следната SQL команда:

CREATE SEQUENCE sq_ai_table ЗАПОЧНЕТЕ С 1 УВЕЛИЧАВАНЕ С 1 NOMAXVALUE;

* В този пример се създава последователност, нареченаsq_ai_table. Последователността започва с1 и всяка стъпка също ще добавя1.

Сега създаваме самия тригер:

СЪЗДАЙТЕ ИЛИ ЗАМЕНЕТЕ TRIGGER tr_ai_table преди INSERT ON ai_table ЗА всеки ред BEGIN SELECT sq_ai_table.NEXTVAL INTO :new.id FROM dual; КРАЙ;

* Както можете да видите, тригер с имеtr_ai_table е създаден за таблицатаai_table. С всяка команда INSERT число от нашата създадена последователност ще бъде взето и заменено в полетоid.

ИДЕНТИЧНОСТ (Oracle 12c и по-нови)

Започвайки с Oracle 12c, е възможно да се създаде таблица със свойство на поле IDENTITY, което е аналогично на автоматично нарастване или автоматично номериране.

Пример за създаване на таблица:

CREATE TABLE ai_table ( id INTEGER NOT NULL ГЕНЕРИРАН ВИНАГИ КАТО ИДЕНТИЧНОСТ (ЗАПОЧВАНЕ С 1, УВЕЛИЧАВАНЕ С 1), име VARCHAR(512) NOT NULL, UNIQUE (id, име) )

* къдетоid е полето ссвойство за автоматично нарастване със стъпка1 и начална стойност1.