sql >> Database teknologi >  >> RDS >> Sqlserver

Kontrol af begrænsninger:TRY/CATCH vs Exists()

Jeg har set den artikel, men bemærk, at for lave fejlfrekvenser ville jeg foretrække "JFDI"-mønsteret. Jeg har brugt dette på højvolumensystemer før (40k rækker/sekund).

I Aarons kode kan du stadig få en duplikat, når du tester først under høj belastning og masser af skrivninger. (forklaret her på dba.se ) Dette er vigtigt:Dine dubletter sker stadig, bare sjældnere. Du har stadig brug for undtagelseshåndtering og at vide, hvornår du skal ignorere dubletfejlen (2627)

Edit:forklaret kortfattet af Remus i et andet svar

Jeg ville dog have en separat TRY/CATCH for kun at teste for dubletfejlen

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. MySQL-forespørgselsparametre i et Pentaho CE-dashboard

  2. sammenligning af truncate vs delete i mysql/sqlserver

  3. Rails 5 form_for med checkbox-array

  4. Python multiprocessing pool hænger på kortopkald