Solo insertando una fila si aún no está allí

Siempre había usado algo similar a lo siguiente para lograrlo:

INSERT INTO TheTable
SELECT
    @primaryKey,
    @value1,
    @value2
WHERE
    NOT EXISTS
    (SELECT
        NULL
    FROM
        TheTable
    WHERE
        PrimaryKey = @primaryKey)

... pero una vez bajo carga, se produjo una violación de clave principal. Esta es la única declaración que se inserta en esta tabla. Entonces, ¿esto significa que la afirmación anterior no es atómica?

El problema es que esto es casi imposible de recrear a voluntad.

Quizás podría cambiarlo a algo como lo siguiente:

INSERT INTO TheTable
WITH
    (HOLDLOCK,
    UPDLOCK,
    ROWLOCK)
SELECT
    @primaryKey,
    @value1,
    @value2
WHERE
    NOT EXISTS
    (SELECT
        NULL
    FROM
        TheTable
    WITH
        (HOLDLOCK,
        UPDLOCK,
        ROWLOCK)
    WHERE
        PrimaryKey = @primaryKey)

Aunque, tal vez estoy usando los bloqueos incorrectos o demasiado bloqueo o algo así.

He visto otras preguntas en stackoverflow.com donde las respuestas sugieren un "IF (SELECT COUNT (*) ... INSERT" etc., pero siempre estuve bajo el supuesto (quizás incorrecto) de que una sola declaración SQL sería atómica.

¿Alguien tiene alguna idea?

Respuestas a la pregunta(6)

Su respuesta a la pregunta