sql >> Database >  >> RDS >> Sqlserver

Beperkingencontrole:TRY/CATCH vs Exists()

Ik heb dat artikel gezien, maar merk op dat ik voor lage uitvalpercentages de voorkeur geef aan het "JFDI" -patroon. Ik heb dit eerder gebruikt op systemen met een hoog volume (40k rijen/seconde).

In de code van Aaron kun je nog steeds een duplicaat krijgen als je eerst onder hoge belasting en veel schrijfbewerkingen test. (hier uitgelegd op dba.se ) Dit is belangrijk:uw duplicaten gebeuren nog steeds, alleen minder vaak. U moet nog steeds uitzonderingen afhandelen en weten wanneer u de dubbele fout (2627) moet negeren

Bewerken:beknopt uitgelegd door Remus in een ander antwoord

Ik zou echter een aparte TRY/CATCH hebben om alleen te testen voor de dubbele fout

BEGIN TRY

-- stuff

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

--more stuff

BEGIN CATCH
    RAISERROR etc
END CATCH


  1. Zoek specifieke waarde in kommalijst in database

  2. Query voor het tellen van verschillende waarden in een voortschrijdend datumbereik

  3. Controleer in node.js mysql-query of er geen overeenkomst is gevonden

  4. PHP, MySQL, SELECT-vraag