在INSERT中使用auto_increment值

时间:2015-09-21 10:14:25

标签: mysql

我实际上要做的是,插入一行INSERT INTO table (col2, col3, <...>) VALUES (col1, $something, <...>).

col1是一个auto_increment id列,基本上我想在INSERT语句中将该值复制到col2,在一个查询中。这可能吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么在同一INSERT语句中,您尝试将生成的AUTO_INCREMENT ID插入另一列。

嗯,这不可能是IMO;如果您这样做,则仍未生成AUTO_INCREMENT ID。

一种解决方案是使用存储过程并像下面一样执行INSERT+UPDATE(示例)

create procedure usp_dowork(parameter list ...)
as
begin
INSERT INTO table (col2, col3, <...>) VALUES (NULL, $something, <...>);
update table set col2 = LAST_INSERT_ID()
where col1 = LAST_INSERT_ID();
end

您应该考虑在DML周围使用事务块来确保两个操作都成功完成。