【问题标题】:Duplicate AUTO_INCREMENT Id upon insertion into another column?插入另一列时重复 AUTO_INCREMENT Id?
【发布时间】:2019-01-08 00:10:57
【问题描述】:

假设我有这个表结构:

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

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

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

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

【问题讨论】:

  • 如果order 总是与id 具有相同的值,为什么需要它?
  • @Nick 初始值相同,但以后可能会改变

标签: mysql last-insert-id


【解决方案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

【讨论】:

    猜你喜欢
    • 2013-09-28
    • 2012-10-08
    • 2019-02-11
    • 2015-10-16
    • 2015-11-18
    • 1970-01-01
    • 2015-04-13
    • 2019-12-29
    • 1970-01-01
    相关资源
    最近更新 更多