插入另一列时重复的AUTO_INCREMENT ID?

时间:2019-01-08 00:10:57

标签: mysql last-insert-id

说我有这个表结构:

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

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

现在,我可以使用一些伪值进行插入,检查它获得了什么ID,然后更新该行,但这似乎很愚蠢。 如何在插入时发生这种情况?

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

1 个答案:

答案 0 :(得分:1)

运行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