我正在尝试编写一个MySQL插入查询,该查询将标识列中的最高值,然后为插入的记录增加一个值。我想,当我制作表时,我将这个字段设置为auto_increment,但由于某种原因,它无法工作。我目前的插入声明是:
INSERT INTO victoria (name, album, order_by) VALUES (:name, :album, :order)order_by字段是一个需要增加一个的字段。
发布于 2013-09-16 04:12:44
如果出于某种原因,不使用auto_increment列来增加列的值,则可以执行以下操作
INSERT INTO victoria
SELECT :name, :album,
COALESCE((SELECT MAX(order_by) FROM victoria), 0) + 1;注意:在重载下,它可能无法为您提供一个不同的值,这意味着几个并发用户同时插入行可以获取相同的MAX(order_by)值。因此,如果您不打算“重新排序”行,那么最好使用auto_increment列。
这是SQLFiddle演示
https://stackoverflow.com/questions/18820177
复制相似问题