SQL 中返回自动递增键和最后插入 ID 之间的区别
Difference between returning auto increment key and last insert ID in SQL
在我们的代码库中,我们使用两种不同的方式来检索新插入行的自动递增键:
创建时 id
是 INT UNSIGNED NOT NULL AUTO_INCREMENT
。通常 return 相同的值 - 通过使用第一个检查,然后 运行 第二个,并比较 returned 值 - 但除了 RETURNING
可能存在的明显差异return 多行插入多行,它允许 return 不仅仅是键列,为了检索插入的自动递增键,它们之间的实际区别是什么?
知道这是 MariaDB 中的 InnoDB table 可能是相关的。
INSERT . . . RETURNING
更灵活:
- 它 return 多个表达式,如果你愿意,所以你可以 return 来自插入行的更多值而不仅仅是自动递增的 id。
- 它 return 多行。
LAST_INSERT_ID()
实际上是为单行插入而设计的,并且只有 return 一个 id。我建议使用 INSERT . . . RETURNING
.
第一个肯定return是插入行的id。如果在 INSERT
和 SELECT
之间插入了另一行,则第二个可能 return 不同行的 ID。
如果插入多行,INSERT-RETURNING 将 return 所有 ID 都已插入,而 LAST_INSERTED_ID() 将 return 只有一个
在我们的代码库中,我们使用两种不同的方式来检索新插入行的自动递增键:
创建时 id
是 INT UNSIGNED NOT NULL AUTO_INCREMENT
。通常 return 相同的值 - 通过使用第一个检查,然后 运行 第二个,并比较 returned 值 - 但除了 RETURNING
可能存在的明显差异return 多行插入多行,它允许 return 不仅仅是键列,为了检索插入的自动递增键,它们之间的实际区别是什么?
知道这是 MariaDB 中的 InnoDB table 可能是相关的。
INSERT . . . RETURNING
更灵活:
- 它 return 多个表达式,如果你愿意,所以你可以 return 来自插入行的更多值而不仅仅是自动递增的 id。
- 它 return 多行。
LAST_INSERT_ID()
实际上是为单行插入而设计的,并且只有 return 一个 id。我建议使用 INSERT . . . RETURNING
.
第一个肯定return是插入行的id。如果在 INSERT
和 SELECT
之间插入了另一行,则第二个可能 return 不同行的 ID。
如果插入多行,INSERT-RETURNING 将 return 所有 ID 都已插入,而 LAST_INSERTED_ID() 将 return 只有一个