【发布时间】:2012-11-06 09:22:32
【问题描述】:
这个问题和我的old question, Getting last record from mysql有点关系。
根据这些答案,我了解到 SELECT 不能保证以任何特定顺序返回行(当然,不使用 ORDER BY 子句)。
我按照@YaK 的回答并使用以下命令在表中添加了AUTO_INCREMENT。
ALTER TABLE maxID ADD sequence INT DEFAULT NULL;
ALTER TABLE maxID ADD INDEX(sequence);
ALTER TABLE maxID MODIFY sequence INT AUTO_INCREMENT;
但是今天我有一个问题。
如果SELECT 不能保证以任何特定顺序返回行(当然不使用ORDER BY 子句),那么在更改表时,AUTO_INCREMENT 会正确实现吗?
【问题讨论】:
-
你试过运行一些测试吗?
-
@GregD :不,我在阅读旧答案时遇到了这个问题。做测试也很困难,因为我必须手动检查每一行并且有数千行......
-
取决于您如何进行此类测试。我认为(1)使用自动增量创建表,(2)填充样本数据,(3)删除主键,(4)使用自动增量值创建新列,然后(5)简单的
SELECT col FROM t WHERE col1 != col2应该可以解决问题。我认为 InnoDB 和 MyISAM 引擎之间可能存在一些差异。 -
@GregD:嗯,让我检查一下...
-
添加 AUTO_INCREMENT 列将“正确地”为您提供唯一的递增值。除此之外的任何事情都是运气。如果您想在启用 AUTO_INCREMENT 之前按您喜欢的顺序设置值,请执行此操作。
标签: mysql last-insert-id