假设我有这个表结构:
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
LAST_INSERT_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 在代码中。
order
ord