【发布时间】:2017-09-16 20:45:33
【问题描述】:
这是一张桌子
CREATE TABLE `mytable` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`val` char(128) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY (val)
) ENGINE=InnoDB DEFAULT CHARSET=ascii;
知道为什么会这样,我希望它在第一个查询本身中将 id 设置为零
MariaDB > insert into mytable set id=0, val="" on duplicate key update id=0, val=val;
Query OK, 1 row affected (0.01 sec)
MariaDB > select * from mytable;
+----+-------+
| id | val |
+----+-------+
| 1 | |
+----+-------+
1 row in set (0.00 sec)
MariaDB > insert into mytable set id=0, val="" on duplicate key update id=0, val=val;
Query OK, 2 rows affected (0.01 sec)
MariaDB > select * from mytable;
+----+-------+
| id | val |
+----+-------+
| 0 | |
+----+-------+
1 row in set (0.00 sec)
MariaDB > insert into mytable set id=0, val="" on duplicate key update id=0, val=val;
Query OK, 0 rows affected (0.01 sec)
任何解释将不胜感激。
更新:我知道使用 AUTO_INCREMENT=0,但这里真正的问题是查询明确设置了 id=0,那么为什么在第一个查询中将其设置为 1。在重复实例中将其设置为 0 似乎 mysql 可以。
谢谢
【问题讨论】:
-
是顺序输出吗?
-
没错。
-
你能不能试试,截断表,将 auto_increment 设置为 0。并用stackoverflow.com/a/15821543/410439 确认。然后再次执行上述步骤。
标签: mysql