Для начала надо добавить уникальный ключ для поля name
Чтобы PostgrSQL сам проверял наличие поля с таким значением и не позволял вставлять запись если запись уже есть.
В этом случае можно делать просто
INSERT INTO names ('John');
и обрабатывать ошибки при данном запросе.
Если ошибки обрабатывать не хочется или, вдруг, нет такой возможности, то можно изменить запрос
INSERT INTO names ('John') ON CONFLICT DO NOTHING;
Т.е. точно так же вставляется запись, но если она уже есть в таблице и возникает ошибка, то на эту ошибку сервер ничего не делает и продолжает работу дальше.
В качестве бонуса можно в случае конфликта например изменять какие-то другие поля в данной строке, которая уже есть в таблице
INSERT INTO names ('John') ON CONFLICT DO UPDATE <здесь изменение значения полей>;