compruebe si hay entradas duplicadas o use el resultado de DOP errorInfo

Tengo una tabla MySQL que tiene un campo para direcciones de correo electrónico que se define como único. Para este ejemplo, digamos que todo lo que hace mi formulario es permitir que un usuario inserte su dirección de correo electrónico en la tabla.

Dado que el campo de correo electrónico es único, la consulta debe fallar si intentan ingresar el mismo correo electrónico dos veces. Tengo curiosidad por las compensaciones entre los dos escenarios:

1) Ejecutar un rápidoSELECT Declaración antes de realizar la inserción. Si la selección devuelve resultados, informe al usuario y no ejecute elINSERT declaración.

2) Ejecutar elINSERT declaración, y comprobar si hay un error de entrada duplicada

// snippet uses PDO
if (!$prep->execute($values))
{
    $err = $prep->errorInfo();
    if (isset($err[1]))
    {
        // 1062 - Duplicate entry
        if ($err[1] == 1062)
            echo 'This email already exists.';
    }
}

Además, suponga que el uso es normal, lo que significa que las entradas duplicadas deben ser mínimas. Por lo tanto, en el primer escenario, obviamente tiene la sobrecarga de ejecutar una consulta adicional paracada inserta, mientras que en el segundo estás confiando en el manejo de errores.

Además, tengo curiosidad por escuchar los pensamientos sobre el estilo de codificación. Mi corazón dice '¡Sé un programador defensivo! ¡Compruebe los datos antes de insertar! mientras mi cerebro dice 'Hmmm, tal vez es mejor dejar que MySQL se encargue de verificar los datos por ti'.

EDITAR - Tenga en cuenta que esta no es una pregunta de "Cómo hago esto", sino una pregunta de "Por qué debo hacer esto de una manera particular". El pequeño fragmento de código que incluí funciona, pero lo que me interesa es la mejor manera de resolver el problema.

Respuestas a la pregunta(3)

Su respuesta a la pregunta