Как сделать AUTO_INCREMENT в db2?

Я думал, что это будет просто, но я могуКажется, я не использую AUTO_INCREMENT в моей базе данных db2. Я сделал некоторые поиски, и люди, кажется, используют "Создано по умолчанию "но это нея не работаю

Если это поможет, здесьs таблица, которую я хочу создать с автоматическим увеличением sid.

  create table student(
      sid integer NOT NULL 
      sname varchar(30),
      PRIMARY KEY (sid)
      );

Любые указатели приветствуются.

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

Привет, если вы все еще не можете сделать столбец как AUTO_INCREMENT при создании таблицы. В качестве обходного пути сначала создайте таблицу, которая:

создать таблицу студентов (целое число sid NOT NULL sname varchar (30), первичный ключ (sid));

а затем явно попытаться изменить столбец бу, используя следующую

изменить таблицу ученик изменить набор столбцов sid GENERATED DEFAULT AS IDENTITY

Или же

изменить таблицу ученик изменить набор столбцов sid GENERATED DEFAULT AS IDENTITY (начиная с 100)

Вам нужно будет создать поле автоинкремента с объектом последовательности (этот объект генерирует последовательность чисел).

Используйте следующий синтаксис CREATE SEQUENCE:

  CREATE SEQUENCE seq_person
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  CACHE 10

Приведенный выше код создает объект последовательности с именем seq_person, который начинается с 1 и увеличивается на 1. Он также кэширует до 10 значений производительности. Параметр кэша указывает, сколько значений последовательности будет храниться в памяти для более быстрого доступа.

Чтобы вставить новую запись в "Лица» таблицу, нам нужно будет использовать функцию nextval (эта функция извлекает следующее значение из последовательности seq_person):

  INSERT INTO Persons (P_Id,FirstName,LastName)
  VALUES (seq_person.nextval,'Lars','Monsen')

Оператор SQL, приведенный выше, вставит новую запись в "Лица» Таблица. "p_id» столбцу будет присвоен следующий номер из последовательности seq_person. "Имя" столбец будет установлен на "Ларс» и "Фамилия" столбец будет установлен на "Monsen».

 Hogan24 мая 2016 г., 21:29
@ Clockwork-Muse - вы правы, в то время как этот тип конструкции будет работать в db2, синтаксис другой.
 Clockwork-Muse20 нояб. 2012 г., 18:09
В то время как я'допустим, что в DB2 есть последовательности, и это одно из них (если я правильно помню, столбцы автоматического генерирования могут использовать один и тот же тип объектов под обложками), DB2 не 'не перечислено на этой странице ... Вы только что скопировали установку Oracle? Имейте в виду, что есть несколькоДругой большие различия между Oracle и DB2 (что зависит от версии), так что вы можетет просто слепо копировать. (Я думаю я'я нахожу людейНедоверие к w3schools здесь вполне оправдано: им не только не хватает DB2, но и postgreSQL и Derby, которые обычно используются ... может быть, и больше, чем Access)
Решение Вопроса

Вы'поиск называется столбцом IDENTITY:

create table student (
   sid integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1)
  ,sname varchar(30)
  ,PRIMARY KEY (sid)
);

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

 valijon06 мая 2019 г., 14:50
Является ли IDENTITY таким же, как SERIAL в других РСУБД?
 Ian Bjorhovde21 нояб. 2012 г., 00:05
Спасибо, @ Заводной-Муза. Исправлена пропущенная запятая.
 Ian Bjorhovde08 мая 2019 г., 00:29
@valijon Если вы хотите быть техническим, они на самом деле не одинаковы, потому что IDENTITY является атрибутом столбца, так же, как AUTO_INCREMENT. SERIAL - это псевдотип, который определяет оба столбцаТип и его атрибуты.
 Clockwork-Muse20 нояб. 2012 г., 18:10
Вы'пропустил запятую (',') после объявления идентифицирующей последовательности, но в противном случаемой Развертывание DB2 (у меня нетЯ включил ведение журнала, поэтому я могуобъявить первичный ключ в данный момент).
 Leons20 нояб. 2012 г., 21:37
Если вам когда-нибудь понадобится вручную вставить значение в столбец, вы должны изменить GENERATED ВСЕГДА на GENERATED BY DEFAULT.
 Ian Bjorhovde20 нояб. 2012 г., 08:44
Какую версию DB2 вы используете и на какой платформе?
 Matt20 нояб. 2012 г., 07:21
Спасибо Ян. Это где я начал. Я'Я не уверен, почему, но по какой-то причинеСОЗДАН ВСЕГДА " часть этого запроса нет узнал. Я получаю ошибку, пропуская правильные паренсы ... индикатор это 'не распознавать ключевые слова.

Добавлено несколько необязательных параметров для созданиябудущий сейф " последовательности.

CREATE SEQUENCE 
  START WITH 1
  INCREMENT BY 1
  NO MAXVALUE
  NO CYCLE
  CACHE 10;

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