Y aquel campo que no puede repetirse es clave primaria? supongo.
En esos casos al hacer clic en el boton de ingresar primero yo llamo a una funcion que devuelve un true or false, en la funcion hago un select count(*) de el valor (del nicho en tu caso) ingresado y si el query devuelve cero entonces mi funcion devuelve true, caso contrario devuelve false y si es true grabo y si es false envio el messagebox correspondiente