use*_*042 2 java mysql sql stored-procedures
我有一个 DB2 表,我正在尝试转换为 MySQL 表。这是 DB2 表:
CREATE TABLE MY_TABLE (
ID BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 100),
ACTIVE SMALLINT NOT NULL,
PRIMARY KEY (ID)
)#
Run Code Online (Sandbox Code Playgroud)
我已经转换为 MySQL,如下所示:
CREATE TABLE MY_TABLE (
ID BIGINT ,
ACTIVE SMALLINT NOT NULL,
PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)
我正在运行一个程序
create procedure test_proced(
in to_create bigint,
out created bigint
)
begin
set created = (select count(vnr.id) from MY_TABLE vnr);
while (created < to_create) do
insert into MY_TABLE (active) values(0);
set created = created + 1;
end while;
end;
Run Code Online (Sandbox Code Playgroud)
但是在此表上添加上述过程后,我收到一些错误,例如:
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value
Run Code Online (Sandbox Code Playgroud)
现在我怀疑GENERATED BY DEFAULT AS IDENTITY. 这个错误是由于这个问题造成的吗?如果是,如何转换为对应的MySQL表?
在 MySQL 中你可以使用AUTO_INCREMENT:
CREATE TABLE MY_TABLE (
ID BIGINT NOT NULL AUTO_INCREMENT,
ACTIVE SMALLINT NOT NULL,
PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)
ID每次在 中插入新行时,都会自动为列生成一个新值MY_TABLE。默认情况下,每个自动生成的值等于紧邻的前一个(按插入顺序)记录的值加 1。
注意:1默认情况下以步长值开始1。
| 归档时间: |
|
| 查看次数: |
16757 次 |
| 最近记录: |