gpt4 book ai didi

MySQL PhpMyAdmin : Alter AUTO_INCREMENT and/or INSERT_ID

转载 作者:行者123 更新时间:2023-11-29 00:53:51 29 4
gpt4 key购买 nike

我有一个发票表,它为每张发票存储一条记录,id 列 (int AUTO_INCREMENT) 是主键,也是发票引用号。

现在,不幸的是,我不得不手动迁移一些在旧系统上生成的发票,这些发票具有五位数 ID,而不是当前系统使用的四位数 ID。

但是,即使我通过 PhpMyAdmin(表操作)将 AUTO_INCREMENT 重置回下一个四位数 ID,它仍然会插入一个五位数的 1,即表中当前较高的 ID 加一。

通过搜索,似乎我实际上需要更改 insert_id 以及 AUTO_INCREMENT ?我尝试执行 ALTER TABLE invoices SET insert_id=8125 以及 ALTER TABLE invoices insert_id=8125 但这些命令似乎都无效。

任何人都可以解释我可以重置 AUTO_INCREMENT 的正确方法,以便它将插入 ID 为 8125 的记录,然后当它到达 10962 时 它将跳过我手动添加的四个记录,并继续从 10966 开始的顺序 id。如果它不会跳过 10962 - 10966 那么这并不重要,因为公司每年不会生成那么多发票,所以这将发生在下一年因此希望不会引起问题。

对于我所处的这种棘手情况,如果能提供任何帮助,我将不胜感激!非常感谢

最佳答案

我建议的第一件事是放弃 PHPMyAdmin,因为它是用于 MySQL 的最糟糕的“应用程序”之一。获得适当的 GUI。我最喜欢的是SQLYog .

现在开始讨论这个问题。永远不要篡改主键,不要像您所说的那样尝试“重置”它或更新具有数据库生成的整数的列。至于为什么,这个话题很宽泛,可以在另一个问题中讨论,只是一旦设置好就永远不要触摸主键。

第二件事是有人正在删除发票记录,因此自动增量现在是 10k+ 而不是 8k+。这不是一件坏事,但如果您的发票需要顺序值(例如发票 1 和 5 之间不能有间隙),则使用一个名为 sequence_id 或 invoice_ref 的额外字段并使用触发器来计算该数字。不要依赖 auto_increment 功能,它会重用通过 DELETE 操作丢失的数字。

或者,您可以导出一直在使用的数据库,找到发票表的 CREATE TABLE 定义,然后找到显示“AUTO_INCREMENT = [some number]”的行"并删除该声明。导入到您的新数据库中,auto_increment 将从最新的发票继续。您可以使用 ALTER TABLE 执行相同的操作,但重新导入更安全。

关于MySQL PhpMyAdmin : Alter AUTO_INCREMENT and/or INSERT_ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092629/

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