代码之家  ›  专栏  ›  技术社区  ›  user81993

插入到另一列时是否复制自动增量ID?

  •  0
  • user81993  · 技术社区  · 7 年前

    假设我有这个表结构:

    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 回复  |  直到 7 年前
        1
  •  1
  •   GMB    7 年前

    在运行 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 在代码中。

    推荐文章