Подтвердить что ты не робот

Как AUTO_INCREMENT в db2?

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

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

  create table student(
      sid integer NOT NULL <auto increment?>
      sname varchar(30),
      PRIMARY KEY (sid)
      );

Любые указатели оцениваются.

4b9b3361

Ответ 1

Вы ищете, называется столбцом IDENTITY:

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

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

Ответ 2

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

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

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

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

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

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

Вышеприведенный оператор SQL вставляет новую запись в таблицу "Лица". Столбец "P_Id" будет присвоен следующий номер из последовательности seq_person. Столбец "FirstName" будет установлен в "Lars", а столбец "LastName" будет установлен в "Monsen".

Ответ 3

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

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

Ответ 4

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

создать студент таблицы (       sid integer NOT NULL       sname varchar (30),       ПЕРВИЧНЫЙ КЛЮЧ (sid)       );

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

alter table student alter column sid set GENERATED BY DEFAULT AS ИДЕНТИЧНОСТЬ

Или

alter table student alter column sid set GENERATED BY DEFAULT AS IDENTITY (начало с 100)