DB2 插入到具有标识列的 table
DB2 insertion into a table with identity column
我目前正在尝试通过 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。
对它为什么这样做有什么想法吗?
谢谢
为了跳过 INSERT
语句中的列,您必须指定不被跳过的列:
db2 "insert into TRAINING1 (f1, name, surname) values ('hello', 'world', 'foo')"
我目前正在尝试通过 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。 对它为什么这样做有什么想法吗?
谢谢
为了跳过 INSERT
语句中的列,您必须指定不被跳过的列:
db2 "insert into TRAINING1 (f1, name, surname) values ('hello', 'world', 'foo')"