插入另一列时重复 AUTO_INCREMENT Id?
Posted
技术标签:
【中文标题】插入另一列时重复 AUTO_INCREMENT Id?【英文标题】:Duplicate AUTO_INCREMENT Id upon insertion into another column? 【发布时间】: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 初始值相同,但以后可能会改变
【参考方案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
。
【讨论】:
以上是关于插入另一列时重复 AUTO_INCREMENT Id?的主要内容,如果未能解决你的问题,请参考以下文章
当您需要基于另一列更新列时,在 Pandas 中循环的替代方法