Non dici quali campi hai usato per stabilire la chiave primaria.
Ma a prescindere tutto fai un errore grossolano nel momento che definisci una chiave primaria e poi vuoi modificarla. Per principio la chiave primaria e' il riferimento ad uno specifico record e quindi deve essere mai NULL e non deve essere modificata. Nella query utilizzi un id, bene, usa quello come chiave primaria e usa l'indice UNIQUE per i campi che devono essere univoci.
L'uso di replace potrebbe non servire. il record viene identificato tramite la chiave primaria o unique e quindi cancellato e riscritto con un nuovo id primario perdendo i riferimenti con altre tabelle/record se questi riferimenti fossero presenti.