插入另一列时重复 AUTO_INCREMENT ID?

Duplicate AUTO_INCREMENT Id upon insertion into another column?

假设我有这个 table 结构:

CREATE TABLE bananas (
    id    INT AUTO_INCREMENT PRIMARY KEY,
    name  CHAR(127),
    order INT
);

我希望行的初始顺序字段与插入顺序相匹配,order == id

现在我可以使用一些虚拟值进行插入,检查它获得的 ID,然后更新该行,但这看起来很愚蠢。 如何在插入时实现这一点?

INSERT INTO bananas (name, order) VALUES ($name, ???);

在 运行 一个 INSERT 之后,你可以立即使用 function LAST_INSERT_ID 恢复最后成功插入的记录的 id 和 运行 一个 UPDATE查询:

INSERT INTO bananas (name, ord) values ('foo', 100);
UPDATE bananas SET ord = LAST_INSERT_ID() WHERE id = LAST_INSERT_ID();

This DB fiddle 演示其工作原理。

PS : 列名 order 与相应的 SQL 关键字冲突,我在代码中将该列重命名为 ord