2014-08-26 2 views
0

Я хочу создать таблицу с auto_increment. Я использую базу данных oracle11gСоздать таблицу с auto_increment с Oracle11g

create table employee(id number(6) auto_increment,first_name varchar2(20) default null,last_name varchar2(20) default null,salary number(7) default null); 

это запрос, который я уверен, выполнение, но таблица не создается. Я тоже попробовал последовательность.

для последовательности я сделал

create table employee(id number(6) name_of_sequence.nextval,first_name varchar2(20) default null,last_name varchar2(20) default null,salary number(7) default null); 

тогда и моя таблица не создается. спасибо

+1

В Oracle 11g нет функции автоматического прироста. Вы пишете свою собственную логику. Функция, которую вы ищете, была [представлена ​​в Oracle 12c] (http://www.oracle-base.com/articles/12c/identity-columns-in-oracle-12cr1.php). – San

+0

Возможный дубликат [Добавить первичный ключ автоматического прироста в существующую таблицу в оракуле] (http://stackoverflow.com/questions/11464396/add-a-auto-increment-primary-key-to-existing-table-in- oracle) – Noel

ответ

0

Вы можете создать объект, известный как последовательность в oracle, например.

CREATE SEQUENCE my_seq; 

Тогда ссылки это в коде с my_seq.nextval в хранимой процедуре, триггере или в коде клиента. Последовательность не привязана к столбцу, содержащемуся в sqlserver. Как уже упоминалось, это возможно в более поздних версиях оракула.

+0

Также см. http://stackoverflow.com/questions/10613846/create-table-with-sequence-nextval-in-oracle – kayakpim

0

Обычная практика, которую я использую и хорошо работает для меня, заключается в том, что вы создаете столбец с обычным типом данных целого числа/числа. выполнить следующие

create table MyTab 
(
My_auto_inc integer/number,.... 
); 

и когда вставка вы это сделать

Insert Into MyTab(My_auto_inc,...) 
Values(Seq_MyTab.nextval,...); 

Я обычно использую имя таблицы после послед как хорошее кодирование практики именования легко запомнить

Смежные вопросы