是否可以检索键列的最大值,增加它并将其作为新值插入数据库中,如下所示(伪sql)
insert into mytable (mykeycolumn,col1,col2)
values((max(mykeycolumn)+1),'val1','val2');
答案 0 :(得分:1)
是的,INSERT
来自SELECT
,但您的固定字段必须来自SELECT
"同样如此:
INSERT INTO mytable (mykeycolumn, col1, col2)
SELECT MAX(mykeycolumn)+1, 'val1', 'val2'
FROM mytable;
补充:正如a_horse_with_no_name所指出的那样,如果MAX() + 1
中有同时进行的交易,mytable
可能会导致您的问题。在某些时候,两个相同的mykeycolumn
值将生成,您将收到错误。理想的解决方案是将表转换为使用 auto_increment 。
答案 1 :(得分:1)
你可以用这个:
INSERT INTO mytable (mykeycolumn,col1,col2) VALUES
((SELECT MAX(mykeycolumn) FROM mytable AS foo)+1,'val1','val2');
答案 2 :(得分:0)
试试这个
INSERT INTO mytable (mykeycolumn, col1, col2)
SELECT SCOPE_IDENTITY()+1, 'val1', 'val2' FROM mytable;