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


Can i insert data in an AUTOINCREMENT Field?

就像它本身一样简单。我想要一个自动递增字段,但有时我必须在某些字段中重复id,这些字段必须手动设置。

使用PHP在Mysql中使用AUTOINCREMENT字段有什么问题吗?(一致性,…)

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

根据您的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列或更多列来创建主键)。一列可以是自动递增的,另一列则是您的"重复id"。无论哪种方式,这都可以确保每一行都有一个唯一的键。