如何在任何表中递增id中添加一系列字符串?

时间:2010-07-12 12:24:45

标签: php mysql auto-increment

我在数据库中有一个带有Order表的MySQL表,这个表有一个自动增量ID。直到现在我们有一般数字订单ID同样1,2,3,4,5 ...从现在开始我必须将A20系列附加到我的ID,如A20103,A20104,A20105等等,当时最后一个三位数达到999附加的系列应该更改为A21001,A21002,A21003等,必须在之前添加的订单中添加相同的系列..

我怎样才能完成这项任务?请指导

4 个答案:

答案 0 :(得分:3)

更改现有的auto_increment列并不是一个好主意 - 你真的必须这样做吗?相反,为什么不修改您的选择查询以返回适当格式的ID?通过这样做,您可以保持参照完整性,并且您也可以在将来的任何时候自由更改订单ID格式,而无需更新数据库。

SELECT id, CONCAT('A2', LPAD(id, 4, '0')) AS order_id FROM <table>;

示例输出:

+------+----------+
| id   | order_id |
+------+----------+
|    1 | A20001   |
|    2 | A20002   
...
|  999 | A20999   |
| 1000 | A21000   |
| 1001 | A21001   |
+------+----------+

答案 1 :(得分:1)

类似于:

"AR2" . str_pad((int) $ordernumber, 4, "0", STR_PAD_LEFT);

吉姆

[edit] - 我假设这是出于其他地方所述的显示目的,数据库上的ID字段是整数!!

答案 2 :(得分:1)

您不能拥有不是数字字段的自动增量。您最好保留当前的自动递增列,并添加一个新的,您将根据您的规则手动计算。

您可能希望使用MAX()函数获取最新订单并生成下一个值:记住在事务中执行此操作。

您可以创建一个函数或触发器,为您完全插入。

答案 3 :(得分:0)

您无法直接向数据库添加前缀。但是,在选择它时,您可以预先添加它。

SELECT concat('A', id) as id FROM table

要获得从20000开始的效果,您可以设置自动增量起始值。