首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL表中添加默认生成的标识?

如何在MySQL表中添加默认生成的标识?
EN

Stack Overflow用户
提问于 2017-12-04 16:21:03
回答 2查看 10.9K关注 0票数 0

我有一个DB2表,我正在尝试转换成MySQL表。这是DB2表:

代码语言:javascript
复制
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)
)# 

我已经转换为MySQL了,比如:

代码语言:javascript
复制
CREATE TABLE MY_TABLE (
  ID BIGINT ,
  ACTIVE SMALLINT NOT NULL,
  PRIMARY KEY (ID)
);

我正在运行一个程序

代码语言:javascript
复制
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;

但是在此表中添加了上面的过程之后,我得到了一些错误,例如:

代码语言:javascript
复制
Caused by: java.sql.SQLException: Field 'id' doesn't have a default value

现在我怀疑GENERATED BY DEFAULT AS IDENTITY。这个错误是由这个问题引起的吗?如果是,如何转换为相应的MySQL表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-04 16:24:35

在MySQL中,您可以使用AUTO_INCREMENT

代码语言:javascript
复制
CREATE TABLE MY_TABLE (
  ID BIGINT NOT NULL AUTO_INCREMENT,
  ACTIVE SMALLINT NOT NULL,
  PRIMARY KEY (ID)
);

每次在ID中插入新行时,都会自动为列MY_TABLE生成一个新值。默认情况下,每个自动生成的值都等于前面(按插入顺序)记录加1的值。

注意:默认是以1步骤值从1开始。

票数 4
EN

Stack Overflow用户

发布于 2017-12-04 16:25:21

将自动增量添加到主键将解决此问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47637651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档