Como agregado, a lo que se ha dicho, a lo que apunta el compañero eduarcol es a que no es necesario un select, ni locate. Todo apunta a capturar la excepción adecuada.
Si se ha diseñado la tabla para que tenga un campo clave único, la base de datos nos puede advertir de cualquier intento de ingresar una clave repetida. ¿Para que darle el gusto de buscar si la misma base de datos nos va a saber decir si se puede o no?
¿Se entiende la idea?
En vez de que viajen muchos registros por la red, sólo hacemos que viaje uno (el que deseamos insertar). Si se puede o no, ya nos dirá la base de datos.
la cosa viene a ser algo así:
El ejemplo de eduarcol es más ilustrativo.
Saludos,