gpt4 book ai didi

mysql - 在 MySQL 表中插入值时如何覆盖自动递增主键的属性?

转载 作者:IT老高 更新时间:2023-10-28 23:45:14 24 4
gpt4 key购买 nike

我有一个 MySQL 用户表,其 主键是一个自动递增的整数。该表已经填充了键在 0 到 30.000 之间的记录。但是,并非所有记录都在那里。一些用户已被删除,因此我有“漏洞”。

现在客户意识到他们错误地删除了一批用户,他们现在希望我重新插入那些保持与他们相同 ID 的用户,以便与电子商务的后端兼容,该后端运行在完全不同的机器,但为客户使用相同的 ID。

现在我是:

  1. 通过从 ID 中删除 auto_increment 属性来更改表的结构
  2. 添加我需要的记录,指定它们的 ID
  3. 恢复对表格结构的更改。

有没有更好的方法来实现这一点?是否有任何 SQL override 函数可以让我强制 MySQL 接受一个唯一但不一定是“行中的下一个数字”的值?

最佳答案

您不必禁用 auto_increment 功能。当您在表中插入一行并在该行中指定主键值时,您想要的 id 将存储在数据库中。 auto_increment 仅在您省略主键字段时使用。

编辑:我想我可以举个例子:

mysql> describe test;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| value | varchar(45) | NO | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)

mysql> insert into test (value) values ('row 1');
Query OK, 1 row affected (0.06 sec)

mysql> select * from test;
+----+-------+
| id | value |
+----+-------+
| 1 | row 1 |
+----+-------+
1 row in set (0.00 sec)

mysql> insert into test values (15, 'row 2');
Query OK, 1 row affected (0.03 sec)

mysql> select * from test;
+----+-------+
| id | value |
+----+-------+
| 1 | row 1 |
| 15 | row 2 |
+----+-------+
2 rows in set (0.00 sec)

编辑 2

mysql> insert into test (id, value) values (3, 'row 3');
Query OK, 1 row affected (0.00 sec)

mysql> select * from test;
+----+-------+
| id | value |
+----+-------+
| 1 | row 1 |
| 15 | row 2 |
| 3 | row 3 |
+----+-------+
3 rows in set (0.00 sec)

关于mysql - 在 MySQL 表中插入值时如何覆盖自动递增主键的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1884387/

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