我可以在AUTOINCREMENT字段中插入数据吗?

时间:2012-07-16 11:18:20

标签: php mysql

像自己一样简单。我想要一个自动增量字段,但有时我必须在某些字段中重复id,我必须手动设置。

使用PHP在Mysql中使用AUTOINCREMENT字段是否有任何问题? (一致性,......)

3 个答案:

答案 0 :(得分:1)

  1. 您可以手动设置自动增量字段,索引将从该数字继续计数(除非id小于当前的ai索引)
  2. 自动增量字段是唯一的,因此在手动设置ai字段时必须非常小心
  3. 一般不应手动设置自动增量字段。如果您发布用例,也许我们可以帮助您制定更好的解决方案

答案 1 :(得分:1)

根据您的php结构,您可以替换:

INSERT INTO table_name (name, incr)
VALUES ('hello', {$incr}) # using retrieved data

INSERT INTO table_name (name, incr)
SELECT 'hello', incr
FROM (  SELECT (incr + 1) AS incr
        FROM table_name
        ORDER BY incr DESC
        UNION
        SELECT 1) AS h
LIMIT 1

基本上它只会检查表中的最高incr值,或者从1开始给它。这只需要一次MySQL调用,并且可以加快速度。

答案 2 :(得分:0)

考虑使用复合主键(2个或更多列来创建主键)。一列可以是自动增量,另一列可以是“重复ID”。无论哪种方式,这都可以确保每一行都有一个唯一的密钥。