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.