0

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

使用 PHP 对 Mysql 中的 AUTOINCREMENT 字段执行此操作有什么问题吗?(一致性 , ... )

4

3 回答 3

1
  1. 您可以手动设置自动增量字段,索引将从该数字开始继续计数(除非 id 小于当前的 ai 索引)
  2. 自动增量字段是唯一的,因此您在手动设置 ai 字段时必须非常小心
  3. 通常不应手动设置自动增量字段。如果您发布您的用例,也许我们可以帮助您制定更好的解决方案
于 2012-07-16T11:22:07.717 回答
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 调用,并且会加快速度。

于 2012-07-16T11:29:36.043 回答
0

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

于 2012-07-16T11:26:45.007 回答