首页 > 解决方案 > 我需要在脚本中放入一个零值的 id

问题描述

CREATE TABLE IF NOT EXISTS home (
  id int(11) NOT NULL AUTO_INCREMENT,
  description(200) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1 COLLATE=latin1_bin;

我需要插入一个 id=0 的默认值,但是我不能这样。任何人都可以帮助我吗?

标签: mysqlsql

解决方案


我会非常谨慎地尝试做这样的事情。MySQL 非常坚持将零排除在外,以至于当列成为自动增量列时,它会更改0to的值。1考虑一下这段代码会发生什么:

CREATE TABLE IF NOT EXISTS home (
  id int(11) NOT NULL,
  description varchar(200) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1;

insert into home (id, description)
    values (0, 'my home');

select *
from home;

alter table home modify column id int auto_increment;

select *
from home;

0表之后不再有alter table.

大概是因为很久以前 MySQL 就决定了这0是一个使用默认值的信号,所以这个值被烘焙了。

可以使用所需的任何其他值。因此,您可能会考虑-1是否需要为使用auto_increment.


推荐阅读