mysql - 我需要在脚本中放入一个零值的 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 的默认值,但是我不能这样。任何人都可以帮助我吗?
解决方案
我会非常谨慎地尝试做这样的事情。MySQL 非常坚持将零排除在外,以至于当列成为自动增量列时,它会更改0
to的值。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
.
推荐阅读
- apache-flink - 我们是否有可能在 Apache Flink 中创建一个可供所有操作员访问的对象?
- python - 无法向设备 ID 中带有“:”的单元发送消息到 Azure IoT 中心
- java - How to get private key from jks keystore for signing the message with privatekey using shal256rsa in java
- c# - Entity Framework Core Cosmos Db - 如何比较字符串,不区分大小写?
- java - Java TLS:在客户端握手时禁用 SNI
- python - 基于日志记录级别的不同实例 repr
- angular - Inequality operator in where clause not working in firestore
- .net - Error while running blazor app in debug mode
- mysql - Delete data from large sized database using Laravel and mysql
- python - Is there a hook/function in kivy to run once a widget has been added to the tree like onComponentDidMount