Как установить автоинкрементный столбец с SQL-разработчиком

Как настроить автоматическое увеличение столбца с помощью Oracle SQL Developer? Почему форма отключена?

Oracle SQL Developer

Note: На рисунке показан Data Modeler, но вопрос и главный ответ говорят о редактировании существующей базы данных.

 A.B.Cade12 июн. 2012 г., 07:48
Смотрите этот пост, который очень похожstackoverflow.com/questions/10613846/…

Ответы на вопрос(8)

В Oracle нет автоинкрементных столбцов. Вам нужна последовательность и триггер. Вот случайный пост в блоге, который объясняет, как это сделать:http://www.lifeaftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in-oracle/

К сожалению, oracle не поддерживает auto_increment, как mysql. Вам нужно приложить немного дополнительных усилий, чтобы получить это.

скажи это твой стол -

CREATE TABLE MYTABLE (
  ID NUMBER NOT NULL,
  NAME VARCHAR2(100)
  CONSTRAINT "PK1" PRIMARY KEY (ID)
);

Вам нужно будет создать последовательность -

CREATE SEQUENCE S_MYTABLE
START WITH 1
INCREMENT BY 1
CACHE 10;

и триггер -

CREATE OR REPLACE TRIGGER T_MYTABLE_ID
BEFORE INSERT
ON MYTABLE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
  if(:new.ID is null) then
  SELECT S_MYTABLE.nextval
  INTO :new.ID
  FROM dual;
  end if;
END;
/

ALTER TRIGGER "T_MYTABLE_ID" ENABLE;
 19 июл. 2015 г., 05:47
Мне больше нравится ответ Дэна. Тот, с изображением. Стоит 1000 слов.
 Fendi Tri Cahyono20 июн. 2012 г., 06:12
я хочу его можно создать автоматически. хехехе ....
 12 дек. 2014 г., 03:00
С 2012 года все изменилось. Вы действительно можете сделать это сейчас с появлением Oracle Database 12c. Вот как это сделать сейчас:thatjeffsmith.com/archive/2014/01/…

@ tom-studee, вы были правы, это можно сделать в программе моделирования данных.

Дважды щелкните по таблице, затем перейдите в раздел столбцов. Здесь дважды щелкните по столбцу, который будет иметь автоинкремент. В общем разделе есть флажок «автоинкремент», просто отметьте его.

После этого вы также можете перейти к разделу «Автоинкремент». раздел, чтобы настроить его.

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

Я нашел этот пост, который выглядит немного старым, но я решил, что буду информировать всех о моих новых находках.

Я использую Oracle SQL Developer 4.0.2.15 в Windows. Наша база данных - Oracle 10g (версия 10.2.0.1), работающая в Windows.

Чтобы сделать автоинкремент столбца в Oracle -

Open up the database connection in the Connections tab Expand the Tables section, and right click the table that has the column you want to change to auto-increment, and select Edit... Choose the Columns section, and select the column you want to auto-increment (Primary Key column) Next, click the "Identity Column" section below the list of columns, and change type from None to "Column Sequence" Leave the default settings (or change the names of the sequence and trigger if you'd prefer) and then click OK

Ваш столбец id (первичный ключ) теперь будет автоматически увеличиваться, но последовательность будет начинаться с 1. Если вам нужно увеличить идентификатор до определенной точки, вам придется выполнить несколько операторов alter для последовательности.
Эта почта есть еще несколько деталей и как это преодолеть.

Я нашел решениеВот

Вы можете сделать автоинкремент в SQL Modeler. В окне свойств столбца нажмите: Общие, затем установите флажок Автоинкремент После этого окно автоматического увеличения будет включено для вас.

 11 мар. 2013 г., 17:02
Спасибо за ваш пост! Пожалуйста, не используйте подписи / слоганы в своих сообщениях. Ваш ящик пользователя считается вашей подписью, и вы можете использовать свой профиль, чтобы публиковать любую информацию о себе, что вам нравится.FAQ on signatures/taglines

Как это сделать с Oracle SQL Developer: На левой панели под соединениями вы найдете «Последовательности», щелкните правой кнопкой мыши и выберите «Создать новую последовательность» из контекстно-зависимого всплывающего окна. Заполните данные: имя схемы, имя_последовательности, свойства (начните со значения, минимального значения, максимального значения, значения приращения и т. Д.) И нажмите кнопку ОК. Предполагая, что у вас есть таблица с ключом, который использует этот auto_increment, при вставке в эту таблицу просто введите & quot; your_sequence_name.nextval & quot; в области, которая использует это свойство. Я думаю, это должно помочь! :)

Решение Вопроса

Если вы хотите сделать автоинкремент PK, вам нужно установить свойство столбца ID для этого первичного ключа.

Right click on the table and select "Edit". In "Edit" Table window, select "columns", and then select your PK column. Go to ID Column tab and select Column Sequence as Type. This will create a trigger and a sequence, and associate the sequence to primary key.

Смотрите картинку ниже для лучшего понимания.

enter image description here

// Мой источник:http://techatplay.wordpress.com/2013/11/22/oracle-sql-developer-create-auto-incrementing-primary-key/

 14 янв. 2019 г., 09:59
Прекрасный ответ. Спасибо . Считаю, что от меня тоже есть голос :)
 13 нояб. 2015 г., 19:05
Спасибо мужчина, ценю это!
 19 июл. 2015 г., 05:48
Отличный ответ. Не уверен, почему за него больше не проголосовали.
 31 мая 2016 г., 17:25
Отличный ответ. Тем не менее, могу ли я изменить, что важно взглянуть на флажок & quot; Проверить столбец пустым перед тем, как вставить & quot; что может быть не хотеть, что ты хочешь. При использовании идентификатора последовательности обычно не требуется заполнять его откуда-либо еще (может зависеть, но обязательно подумайте немного).
 13 июн. 2017 г., 10:46
Отличный ответ. У меня работает идеально.

UPDATE: В Oracle 12c и далее у нас есть возможность создать поле автоинкремента, лучше, чем триггер и последовательность.

Right click on the table and select "Edit". In "Edit" Table window, select "columns", and then select your PK column. Go to Identity Column tab and select "Generated as Identity" as Type, put 1 in both start with and increment field. This will make this column auto increment.

See the below image

enter image description here

From SQL Statement

Столбец IDENTITY теперь доступен в Oracle 12c:

 create table t1 (
     c1 NUMBER GENERATED by default on null as IDENTITY,
     c2 VARCHAR2(10)
     );

или укажите начальное значение и значение приращения, также предотвращая любую вставку в столбец идентификаторов (GENERATED ALWAYS) (опять же, только для Oracle 12c +)

create table t1 (
    c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
    c2 VARCHAR2(10)
    );

EDIT : если вы столкнулись с какой-либо ошибкой, такой как «ORA-30673: изменяемый столбец не является столбцом идентификаторов», то вам необходимо создать новый столбец и удалить старый.

Ваш ответ на вопрос