在 PHP 中使用 mysqli::insert_id 进行 INSERT INTO ON DUPLICATE KEY UPDATE 时,如果行已更新,我将继续获取下一个自动增量而不是更新的行。在同一个数据库但在另一个表中,使用 ON DUPLICATE KEY UPDATE 时我没有这种行为。相反,我得到了更新行的 id。但是现在由于某种原因,在我创建的新表中,我不断得到下一个甚至不存在的 id。这两个表都是 MyISAM,并且有一个自动增量字段。我不明白为什么他们的行为不同。
例子:
==================================
Table: example
==================================
id | unique_field | data
==================================
1 | unique1 | 123
2 | unique2 | 456
INSERT INTO
example
SET
unique_field = 'unique1',
data = '321'
ON DUPLICATE KEY UPDATE
data = '321'
// mysqli::insert_id returns 3 (not 1)!!
有任何想法吗?