说我有这个表结构:
CREATE TABLE bananas (
id INT AUTO_INCREMENT PRIMARY KEY,
name CHAR(127),
order INT
);
我希望各行的初始顺序字段与插入顺序匹配,所以order == id
现在,我可以使用一些伪值进行插入,检查它获得了什么ID,然后更新该行,但这似乎很愚蠢。 如何在插入时发生这种情况?
INSERT INTO bananas (name, order) VALUES ($name, ???);
答案 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
。