修改
我想将id更新为新创建的自动增量ID,行的其余部分不会更改。
ORIGINAL:
我在mysql中有一个表格如下:
id userId productId
所有列都是UBIGINT,id是PRIMARY KEY,设置为AUTO INCREMENT。
所以现在我想在同一个表中重新插入一行,但是使用新创建的id。应删除旧行!
我正在使用id作为订单(更高==更新)。
这是否可行,因为另一个选项是添加时间戳列并更新此列,但我不会使用时间戳。所以我想不惜一切代价阻止这种情况。
答案 0 :(得分:2)
INSERT INTO table (userId, productId) VALUES
(SELECT userId, productId FROM table WHERE id=[id of row]);
DELETE FROM table WHERE id=[id of row];
答案 1 :(得分:2)
我们说我们有下表
create table so (
`id` int(11) not null auto_increment,
`num` varchar(20) not null, primary key (`id`),
unique (`num`)
) engine=InnoDB default charset=utf8;
然后我们可以使用以下查询来插入新行
insert into so (num) values ("hi") on duplicate key update id=last_insert_id()+1;
如果已经" hi" -row此查询将在最后一次插入后将其ID更新为下一个
在你的情况下
insert into table (userId, productId) values (someUserId, someProductId)
on duplicate key update id=last_insert_id()+1;
此外,还有replace
MySQL扩展。
replace into table (userId, productId) values (someUserId, someProductId);
作为on duplicate key update
,只有当您的表格有unique
或primary key
约束时,它才有效。
与on duplicate key update
replace
不同,它会首先删除现有行,然后插入新行,而on duplicate key update
只会更新它。
答案 2 :(得分:0)
是的,这是可能的。您只需要删除旧记录并添加另一个记录。但你必须知道auto_increment会一直增长。