Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2008 :INSERT sinon quitte, conserve une colonne unique

C'est de la folie de ne pas avoir d'index.

Cela aiderait, mais la longueur de la clé d'index ne peut être que de 900 octets.

Cependant, il est probable que vous ayez déjà des doublons car il est possible qu'un 2e EXISTS s'exécute après le 1er EXISTS mais avant le 1er INSERT.

La création de l'index vous le dira et vous protégera ensuite contre cela.

Cependant, vous pouvez obtenir des erreurs sous une charge importante.

Mon approche préférée pour les insertions élevées/faibles doublons est le modèle JFDI. Hautement simultané

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