我有一个MySQL用户表,其主键是一个自动递增的整数.该表已填充了密钥介于0到30.000之间的记录.不过,并非所有记录都在那里.一些用户已被删除,因此我有"漏洞".
现在,客户已经意识到他们错误地删除了一堆用户,现在他们希望我重新插入那些保持相同ID的用户,以便与电子商务的后端兼容,后者在不同的机器上运行,但为客户使用相同的ID.
目前我是:
有没有更好的方法来实现这一目标?是否有任何SQL override函数允许我强制MySQL接受一个唯一但不一定是"行中的下一个数字"的值?
Dan*_*oap 26
您不必禁用该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)
Run Code Online (Sandbox Code Playgroud)
编辑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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23739 次 |
| 最近记录: |