显示无符号的zerofill自动增量值,不带前导零

时间:2010-03-15 12:55:17

标签: php mysql

我的primay键是user_id,它是auto incremant UNSIGNED ZERO FILL,我想在不带前导零的页面上显示user_id(表示1而不是0000000001)。 我们怎样才能在php或mysql中做到这一点  还有一个问题......

如果我删除了最后一个记录(让user_id = 21),那个表的id最高,那么我们可以将自动增量值调整为21而不是该表的22个。

1 个答案:

答案 0 :(得分:2)

在不带前导零的PHP中显示:

echo (int) $val;

要设置auto_increment值(这不是一个好习惯,你应该让MySQL为你处理主键!):

mysql> CREATE TABLE test( id INTEGER AUTO_INCREMENT, data TEXT, PRIMARY KEY id(id) );
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO test VALUES (1,'23'),(2,'32'),(3,'3232');
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'test';
+----------------+
| AUTO_INCREMENT |
+----------------+
|              4 |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT MAX(id) FROM test;
+---------+
| max(id) |
+---------+
|       3 |
+---------+

1 row in set (0.00 sec)

然后从测试中删除,检查auto_increment是否高于PHP中的max(id),如果不是:

mysql> ALTER TABLE test AUTO_INCREMENT=3;
Query OK, 3 rows affected (0.05 sec)
Records: 3  Duplicates: 0  Warnings: 0

由于您有3条记录,auto inc为4,删除1所以2条记录,auto inc应该是下一个值,因此将其设置为3。

如上所述,这不是一个好的做法,如果你在执行这些auto_inc查询时没有锁定表格,你可能会得到凌乱的数据 - 牺牲主键顺序的性能似乎不合理!

相关问题