Opino lo mismo, tienes que hacer un procedimiento almacenado.
Tu lo que quieres hacer es primero una insercion para generar la 342 con los cambios realizados y luego cambiar el valor del reistro anterior si no me equivoco.
1. Insercion
2. Modificacion
Es imposible hacerlo en una sola consulta.
Si quieres simplemente actualizar y no guardar el registro anterior te bastara con solo hacer un UPDATE.
Código:
UPDATE historia
SET referencia = 5345346
WHERE id_historial = 341;
Solo en el caso de que sean integer, numeric, bigint, etc.
si son varchar los encierras entre comillas simples '5345346'
Espero que sirva de algo.
Bye.