entonces tu llave primaria es una llave compuesta, no nada mas un campo, lo que podrias hacer es un merge a la "old school" que es esto, hacer tus queries para identificar los registros nuevos y despues insertar estos, y asi mismo hacer tus queries para identificar los registros viejos y actualizarlos es algo como
Código SQL:
Ver originalINSERT INTO production
SELECT * FROM staging AS t1
LEFT JOIN production AS t2 ON (t1.id=t2.id)
WHERE t2.id IS NULL
UPDATE production
SET old_value=new_value
FROM
(
SELECT * FROM staging AS t1
LEFT JOIN production AS t2 ON (t1.id=t2.id)
WHERE t2.id IS NOT NULL
) AS t1 WHERE t1.id=production.id
saludos!