Metti in chiave l'id.
Quando fai la insert e viene restituito una violazione di chiave, ricalcoli la nova chiave finchè non si verifica più l'errore di violazione.