我目前正在使用此查询
insert into races(race_city_id, race_date, racers, division, elimination)
values (:race_city_id, :race_date, :racers, :division, :elimination)
on duplicate key update
race_city_id = values(race_city_id),
race_date = values(race_date),
racers = values(racers),
division = values(division),
elimination = values(elimination);
在race_date,division和elimination上使用唯一键。我目前正在使用on duplicate key
,但是在找到重复的密钥时,我需要删除并在比赛中插入新行(2个查询)或以某种方式重新生成行的id字段并更新其中的一些字段。我正在使用InnoDB,我已经读过,当你更新一行时,主键会被重新生成,但我的不是。 id设置为自动递增,因此我不确定是否有办法重新生成密钥。
查询正确地更新了行,但我只需要重新生成密钥。
答案 0 :(得分:1)
将查询更改为:
local-name()='Lol'
由于replace into races(
race_city_id,
race_date,
racers,
division,
elimination
) values (
:race_city_id,
:race_date,
:racers,
:division,
:elimination
)
的工作原理与replace into
完全相同,只是表中的旧行与主键或的新行具有相同的值唯一索引,在插入新行之前删除旧行,生成新ID。