В настоящее время я пытаюсь автоматизировать базу данных DB2 с помощью сценариев оболочки, но, похоже, проблема с операцией INSERT.Вставка DB2 в таблицу с идентификационным столбцом
Таблицы я создаю выглядеть следующим образом:
CREATE TABLE "TRAINING1"
(ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (STARTS WITH 1 INCREMENT BY 1),
F1 VARCHAR(20) NOT NULL,
name VARCHAR(40) NOT NULL,
surname VARCHAR(40) NOT NULL,
CONSTRAINT pk_train1_id primary key(ID));
Теперь создание прекрасно работает для всех подобных таблиц, но при попытке вставить данные:
db2 "insert into TRAINING1 values ('hello', 'world', 'foo', 'bar')"
Я получаю эту ошибку:
SQL0117N The number of values assigned is not the same as the number
of specified or implied columns or variables. SQLSTATE=42802
Насколько я понимаю, первичный ключ, который я указал, должен генерировать значения автоматически и не может иметь значения, явно назначенные ему. Из любопытства я сделал это:
db2 "insert into TRAINING1 values (1, 'hello', 'world', 'foo', 'bar')"
и затем жалуется на эту ошибку:
SQL0798N A value cannot be specified for column "ID" which is defined
as GENERATED ALWAYS. SQLSTATE=428C9
Я все еще достаточно новое для DB2, но почти через неделю, я до сих пор не нашел решений для этого еще нет. Я запускаю DB2 Express Edition на 64-битной виртуальной машине Ubuntu. Любые мысли о том, почему это делается?
Благодаря
Вы перечислите 4 колонки символов для 'INSERT ', но в таблице есть только 3 символьных столбца. –