sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2008:INSERTAR si no sale, mantener una columna única

Es una locura no tener un índice.

Ayudaría, pero la longitud de la clave de índice solo puede ser de 900 bytes.

Sin embargo, es probable que ya tenga duplicados porque existe la posibilidad de que un 2.° EXISTA se ejecute después del 1.° EXISTE pero antes del 1.° INSERTAR.

La creación del índice le informará y, posteriormente, protegerá contra esto.

Sin embargo, puede obtener errores bajo una carga pesada.

Mi enfoque favorito para inserciones altas/duplicados bajos es el patrón JFDI. Altamente concurrente

BEGIN TRY
   INSERT etc
END TRY
BEGIN CATCH
    IF ERROR_NUMBER() <> 2627
      RAISERROR etc
END CATCH