如何在MySQL表中添加GENERATED BY DEFAULT AS IDENTITY?

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表?

Gio*_*sos 5

在 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