在插入到另一列时复制自动增量id?

e7arh2l6  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(309)

假设我有这个表结构:

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

我希望行的初始顺序字段与插入序列匹配,所以,order==id
现在,我可以使用一些伪值进行插入,检查它得到了什么id,然后更新行,但这看起来很愚蠢。如何在插入时实现这一点?

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

esyap4oy1#

在运行 INSERT ,可以使用函数 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();

这个db小提琴演示了它是如何工作的。
ps:列名 order 与相应的sql关键字冲突,我重命名了该列 ord 在密码里。

相关问题