mysql sintax用于在中间行或我们想要的任何地方插入新行而不更新现有行,但是自动递增主键(id)?
' id | value
' 1 | 100
' 2 | 200
' 3 | 400
' 4 | 500
Run Code Online (Sandbox Code Playgroud)
我想在id 2之后插入一个新行,值为300.我想要输出如下:
' id | value
' 1 | 100
' 2 | 200
' 3 | 300 <-- new row with id (automatic increment)
' 4 | 400 <-- id=id+1
' 5 | 500 <-- id=id+1
Run Code Online (Sandbox Code Playgroud)
谢谢.
Joh*_*ica 34
您必须将其拆分为2个操作.
START TRANSACTION;
UPDATE table1 SET id = id + 1 WHERE id >= 3 order by id DESC;
INSERT INTO table1 (id, value) VALUES (3, 300);
COMMIT;
Run Code Online (Sandbox Code Playgroud)
请注意,您需要order by在update语句中,因此它将首先以最高ID开头.
另一个想法是声明id为decimal(10,1)并2.5在2和3之间插入值作为id.