【问题标题】:Reset auto increment without using ALTER TABLE statement mysql在不使用 ALTER TABLE 语句 mysql 的情况下重置自动增量
【发布时间】:2017-03-06 18:20:54
【问题描述】:

我想为我的应用程序中的一个用例重置 AUTO_INCREMENT 字段。我知道如何使用下面给出的 ALTER TABLE 语句来做到这一点:

ALTER TABLE tablename AUTO_INCREMENT = 1;

我想知道是否可以在不使用 ALTER TABLE 语句的情况下重置 AUTO_INCREMENT。我想这样做的原因是因为 ALTER TABLE 语句自动提交当前事务。我想这样做的原因是因为我正在执行一系列 mysql 查询,其中我关闭了自动提交并仅在所有查询都成功执行时才提交。在这里,正在执行的查询之一是重置自动增量。但是,ALTER TABLE 语句似乎会自动提交当前事务,从而在发生任何异常时失去原子性。

提前致谢。

【问题讨论】:

  • 如果您的数据库设计正确,我想不出任何应该定期更改表的自动增量的情况。顺便说一句,如果没有 ddl 命令,您将无法重置自动增量 - 所有这些都会形成当前事务。
  • 实际上,我正在删除表的所有条目并用新条目更新它。因此,如果表之前有 4 个条目,则新条目的 id 将从 5 开始。

标签: mysql


【解决方案1】:

如果要删除所有条目并重置自动增量,请使用truncate table 语句:

任何 AUTO_INCREMENT 值都会重置为其起始值。这是真实的 即使对于 MyISAM 和 InnoDB,它们通常不会重用序列 价值观。

【讨论】:

  • 好吧,truncate table 语句也会自动提交当前事务。我们试图避免自动提交当前事务。
  • 很抱歉,您的要求相互矛盾。你要求的是不可能的。
  • 我知道..这就是我在这里发布它以了解是否有其他方法的原因:)
  • 要重置自动增量,需要一个ddl语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
相关资源
最近更新 更多