插入另一列时重复 AUTO_INCREMENT ID?
Duplicate AUTO_INCREMENT Id upon insertion into another column?
假设我有这个 table 结构:
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 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
。
假设我有这个 table 结构:
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 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
。