- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个发票表,它为每张发票存储一条记录,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/
我知道这不是什么大问题,但还是让我觉得很痒。 我有一个 SQL Server 2005 脚本来创建新的数据表、约束、更改一些表以添加列、更改过程以将表更改考虑在内等。 一切正常,直到脚本遇到我的 AL
我需要一个包含三列的数据框:i、j(改变)和 k(j 的改变)。我有一个邻接矩阵(下面的示例)。从那里我可以获得一个图形对象并提取边缘列表。我如何操作数据以获得类似于下面的 WANT 数据框的输出?
假设我有这个 SQL 语句: ALTER TABLE dbo.[tbl] ALTER COLUMN col1 varchar(300) ALTER TABLE dbo.[tbl] ALTER COLU
我在表中有一列,因此它不再是 NVARCHAR(256),而是 NVARCHAR(MAX)。我知道执行此操作的命令 (ALTER TABLE ALTER COLUMN NVARCHAR(MAX))。我
我在表中有一列,因此它不再是 NVARCHAR(256),而是 NVARCHAR(MAX)。我知道执行此操作的命令 (ALTER TABLE ALTER COLUMN NVARCHAR(MAX))。我
假设我有这两个 ALTER TABLE: ALTER TABLE tableName ADD COLUMN colName INT(11) AFTER colName2 ALTER TABLE tab
我正在尝试扩展 IdentityUser 类。我添加了一个新类 ApplicationUser 并继承了 IdentityUser 类。迁移已成功添加,但在更新数据库时,出现错误“对象 'PK_Asp
我想将 sql server 2005 表中的列修改为 IDENTITY(1,1) 顺便说一句,该表是空的,要更改的列是主键。 该列也是另外两个表的外键。 谷歌搜索后我发现你不能使用Alter tab
这是我要实现的目标:我在列表中有四个按钮,每个按钮都有白色背景和独特的彩色边框。单击一个按钮时,其背景颜色将与其边框颜色相同。单击第二个按钮时,第一个按钮恢复正常,第二个按钮的背景填充第二个按钮的边框
我在 clickhouse 有一张 table ,比如“my_table”,它有复制品(my_table_rep1,...)。我需要添加一个列,类型为 float64,默认值 (-1)。 我该怎么做?
alter FUNCTION [Kuri].[fnGetAge](@kuri_cust_Id int,@amt decimal) RETURNS SMALLINT AS BEGIN D
我试图确保当我 mysqldump 数据库时约束在执行以下查询后按数字顺序排列。当我在没有 AFTER 的情况下进行转储(这不起作用)时,它显示 phppos_sales_ibfk_3 作为第一个约束
我有两个表:cleanup 和 uniqueEntries。它们都有一个自动递增的id作为主键。 uniqueEntries 的表结构来自 cleanup,如下所示: $sql = "CREATE T
我有一个包含以下数据和结构的表: Date Analyst Start Time Stop Time 4/2/2018 Bill Smith 7:00
This question already has answers here: Error renaming a column in MySQL
是否可以更改表的多(复合)列键? 示例表: CREATE TABLE `test_abc` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `
我尝试执行 oracle alter session 查询以更改语言设置,但失败并出现错误“ORA-01036:非法变量名称/编号”。 preparedStatement = connection.p
我正在与一位客户合作,他希望大型数据库中的每个表的每条记录都有历史数据,并且为了美观,希望这些列位于每个表的末尾。例如: 表名 主键 数据列 历史专栏 所以我的问题是,是否有一个 SQL 命令可以将列
我正在尝试更改 SQL Server 2000 更新触发器,但它一直挂着、挂着、挂着。为什么会发生这种情况,我该怎么做才能解决这个问题?这是一个长触发器,这可能是为什么? 触发代码较长,简化如下: A
我正在将我的 mysql 数据库表从 id (auto) 更改为 uid。 ALTER TABLE companies DROP PRIMARY KEY; ALTER TABLE companies
我是一名优秀的程序员,十分优秀!