gpt4 book ai didi

mysql - 为什么我不能在 MySQL 的索引 0 处插入一行?

转载 作者:行者123 更新时间:2023-11-29 05:07:47 24 4
gpt4 key购买 nike

我有一个简单的表,其中有一个 id 列作为主键 (int)。当我运行此语句时,它会创建一个新行,但具有自动递增的 id 值:

INSERT INTO `test_table` (`id`,`id_user`,`someString`) VALUES (0, 0, 'Hello World')

产生:

id (pk) | id_user | someString
1 | 0 | Hello World
2 | 0 | Hello World
3 | 0 | Hello World

为什么会这样?我不能让索引为 0 吗?

最佳答案

没试过,但我想你可以 https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html如果“没有为 AUTO_INCREMENT 列指定值,因此 MySQL 会自动分配序列号。您也可以显式地将 0 分配给该列以生成序列号,除非启用了 NO_AUTO_VALUE_ON_ZERO SQL 模式”如果你确实指定了一个值,那么 mysql 将接受它(只要它不会导致主键错误)并且后续插入将在你未指定它的地方正常增加。因此,如果您愿意,完全有可能创建不连续性。

例如

ariaDB [sandbox]> DROP TABLE IF EXISTS T;
Query OK, 0 rows affected (0.11 sec)

MariaDB [sandbox]> CREATE TABLE T (ID INT AUTO_INCREMENT PRIMARY KEY, VAL VARCHAR(3));
Query OK, 0 rows affected (0.17 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> INSERT INTO T (ID,VAL) VALUES (3,'AAA');
Query OK, 1 row affected (0.02 sec)

MariaDB [sandbox]> INSERT INTO T (ID,VAL) VALUES (2,'CCC');
Query OK, 1 row affected (0.02 sec)

MariaDB [sandbox]> INSERT INTO T (ID,VAL) VALUES(1,'BBB');
Query OK, 1 row affected (0.04 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> INSERT INTO T (VAL) VALUES ('DDD');
Query OK, 1 row affected (0.04 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> INSERT INTO T (ID,VAL) VALUES (10,'EEE');
Query OK, 1 row affected (0.01 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> INSERT INTO T (VAL) VALUES ('FFF');
Query OK, 1 row affected (0.02 sec)

MariaDB [sandbox]>
MariaDB [sandbox]> SELECT * FROM T;
+----+------+
| ID | VAL |
+----+------+
| 1 | BBB |
| 2 | CCC |
| 3 | AAA |
| 4 | DDD |
| 10 | EEE |
| 11 | FFF |
+----+------+
6 rows in set (0.00 sec)

关于mysql - 为什么我不能在 MySQL 的索引 0 处插入一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com