DB2插入带有标识列的表

时间:2015-01-15 08:36:37

标签: db2 primary-key sql-insert

我目前正在尝试通过shell脚本自动化DB2数据库,但INSERT操作似乎存在问题。

我创建的表格如下:

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仍然相当新,但差不多一个星期后,我还没有找到任何解决方案。 我在64位Ubuntu虚拟机上运行DB2 Express Edition。 有关它为何这样做的任何想法?

由于

1 个答案:

答案 0 :(得分:2)

为了跳过INSERT语句中的列,您必须指定不要跳过的列:

db2 "insert into TRAINING1 (f1, name, surname) values ('hello', 'world', 'foo')"